Последствия использования структурированной обработки исключений (SEH)?

StackOverflow https://stackoverflow.com/questions/5053552

  •  15-11-2019
  •  | 
  •  

Вопрос

Я вижу, что Дуг Харрисон сделал хорошее утверждение о том, что «неправильно» с использованием (то есть ловли) структурированных исключений (см. Вопрос № 3 ).Но какие другие последствия есть?Например, что произойдет, если у меня есть несколько проектов, составленных с / eHa, смешанным с другими проектами, составленными с / ehs?Есть ли проблемы, когда библиотеки связаны (время компиляции или время выполнения) друг с другом?

Но это всего лишь один пример.Какие еще проблемы могут быть?

Это было полезно?

Решение

/EHa disables an optimization. With /EHs in effect, the compiler can omit exception filters if it can be sure that no C++ exception is ever thrown by the code wrapped in a try {}. That's a small space optimization on x86 and x64, very small time optimization on x86. Problem is, those filters are needed if you catch non-C++ exceptions. The consequence is that the stack gets unwound when such an exception is caught without the destructor of a C++ object getting called. Not good, /EHa avoids it.

Mixing doesn't cause linker problems. It causes the above problem.

Yes, /EHa also makes catch(...) do a very stupid thing, it really catches everything. That ship wreck sailed a while ago though, Pokemon C++ exception handling is a bad idea too.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top