像其他c++特征一样,c++的标准并没有指定异常处理的实现机制。这使得c++实现者可以使用任何实现机制。我将讲述vc++怎么实现的。vc++把异常处理置于she(structured exception hangling)的上面。she是windows操作系统提供的结构化的异常处理。
she导论
在本讨论中,我将考虑那些显式的异常。例如被0除,空指针访问等。当异常出现,中断会产生,控制被转到os。 os调用异常处理,检查从异常发出的函数开始的函数调用顺序,执行stack unwinding和控制转移。我们可以开发自己的异常处理函数,在os中注册。os就会在异常事件时调用它们。
windows定义了一个特别的结构用来注册:
exception_registration:
struct exception_registration
{