В синхронной модели обработки исключений исключения всегда генерируются явно;фактический оператор throw
должен встречаться в исходном коде в известной и четко определенной точке потока команд, чтобы компилятор знал, когда могут возникать исключения (это также означает, что он может оптимизировать код обработки исключений, если он может доказатьисключений не может быть).
SEH - об исключениях, запускаемых процессором, вещи, которые сам код не осознавал, могли произойти, но были, так сказать, «вне диапазона».Оно асинхронно в том смысле, что исключение внедряется в код, который не знал, что это может даже произойти, во многом аналогично тому, как обработчики сигналов могут выполняться в главном потоке, прерывая то, что фактически происходило в момент получения сигнала.
SEH можно рассматривать во многом как временно зарегистрированные обработчики сигналов, где исключительные условия являются сигналами, блоки __try
определяют, где действует обработчик, а блоки __except
и __finally
являются обработчиками, если "сигнал "получен.