У меня недавно была проблема, которая была косвенно вызвана SEH, особенно из-за одной особенности SEH, о которой, я думаю, должен знать каждый разработчик:
Когда используется SEH, деструкторы не вызываются, поэтому, если в вашем деструкторе есть код очистки, он не будет очищен.
Наша проблема была вызвана критической секцией, которая была обернута объектом с Lock в конструкторе и Unlock в деструкторе.
У нас была тупиковая ситуация, и мы не могли понять, почему, и примерно после недели копания кода, дампов и отладки мы наконец поняли, что это потому, что было исключение, которое было обработано COM и вызвало раздел Critical. оставаться запертым.
Мы изменили флаг компиляции в VS в свойствах проекта, которые говорят ему запускать деструкторы даже для SEH, и это решило проблему.
Таким образом, даже если вы не можете использовать SEH в своем коде, вы можете использовать библиотеку, которая (например, COM) и может вызвать непредвиденное поведение.