每个 C++ 开发人员都应该了解有关结构化异常的哪些要点?
它们是相当于 Unix 信号的 Win32,可以让您捕获 CPU 异常,例如访问冲突、非法指令、除零等。
使用正确的编译器选项(对于 Visual C++ 为 /EHa),C++ 异常使用与堆栈展开相同的机制,可以正常处理 C++(用户)异常和 SEH(操作系统)异常。
与 C++ 异常不同,SEH 没有类型化,但都共享相同的数据结构,其中包含异常代码(原因)以及有关发生故障的代码以及故障时 CPU 寄存器保存的内容的附加信息。看GetExceptionCode http://msdn.microsoft.com/en-us/library/ms679356(VS.85).aspx and GetExceptionInformation http://msdn.microsoft.com/en-us/library/ms679357(v=VS.85).aspx有关此的更多详细信息。
此外,SEH 具有“第一次机会”处理,允许您记录或以其他方式处理异常before展开会破坏所有局部变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)