文档指出“使用 _set_se_translator 时必须使用 /EHa。”。
我的问题是:应该将 /EHa 用于项目中的所有文件/项目中捕获异常的所有文件,还是仅用于调用 _set_se_translator 的文件中?
问问题
1915 次
2 回答
2
在检查之后,我必须不同意之前所说的所有需要用 /EHa 编译的实例。我做了一个小程序:
崩溃代码
__declspec(dllexport) void crashMe() { *((int*)0)=0; }
在完全没有任何异常处理的情况下编译的 DLL
- 在 try/catch 中的其他地方调用代码
然后
- 除非调用代码使用 /EHa 编译,否则程序将崩溃
- 没有
_set_se_translator
异常只能被捕获catch(...)
于 2011-11-07T09:08:22.910 回答
2
您不仅需要捕获异常的函数,还需要抛出和传播异常的函数。对自身的实际调用_set_se_translator
可能不需要用/Eha编译,但为什么会不一致呢?
于 2011-11-04T13:52:42.253 回答