在异常处理的同步模型中,总是显式抛出异常;一个实际的throw语句必须出现在源代码中,在指令流中一个已知且明确定义的点,以便编译器知道何时会发生异常(这也意味着它可以优化异常处理代码,如果它可以证明没有异常可以发生)。
SEH 是关于 CPU 触发的异常,代码本身没有意识到可能发生的事情,但可以说是“带外”引发的。它是异步的,因为异常被注入到甚至不知道它可能发生的代码中,就像信号处理程序可以在主线程中运行一样,中断接收信号时实际发生的任何事情。
SEH 可以被认为很像临时注册的信号处理程序,其中异常条件是信号,__try块定义处理程序在何处生效,如果接收到“信号” ,则__except和__finally块是处理程序。