windows – C try-catch块没有捕获硬件异常
|
我正在研究visual studio 2013中的硬件和软件异常.我知道我可以通过将’Enable C Exceptions’选项设置为/ EHa来捕获硬件异常(是的,使用SEH异常).我试图抓住以下例外情况: EXCEPTION_ARRAY_BOUNDS_EXCEEDED – 没有抓住 EXCEPTION_ACCESS_VIOLATION – 抓住了 EXCEPTION_INT_OVERFLOW – 没有抓住 EXCEPTION_INT_DIVIDE_BY_ZERO – 被抓住了 这是代码的一个例子. try {
a = std::numeric_limits<int>::max();
a += 5;
}
catch (...){
std::cout << "EXCEPTION_INT_OVERFLOW Exception Caught" << std::endl;
exit(1);
}
try {
int h = 0;
b = b / h;
}
catch (...){
std::cout << "EXCEPTION_INT_DIVIDE_BY_ZERO Exception Caught" << std::endl;
exit(1);
}
它只捕获除零异常.
对.操作系统仅将硬件陷阱映射到结构化异常,它不会添加逻辑来检测硬件没有的条件. (另一方面,诸如JVM或CLR之类的托管框架通常会添加逻辑.当然,在软件中捕获这些框架会带来性能损失,而硬件陷阱逻辑是免费的,除非陷阱实际发生.) 现在,这并不是说您无法在x86处理器上收到EXCEPTION_INT_OVERFLOW.但条件并不是您所期望的 – 仅仅在添加期间的环绕不会导致陷阱.请参阅Raymond Chen的博客文章: > In the red corner, (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Watin Windows身份验证
- windows重启后浏览器无法上网的解决办法
- window.on load、DOMContent Loaded和$(document).ready()
- Qt for Windows:Qt 5.11.0 MinGW 静态编译版本(包含OpenS
- 2018-5-12 windows 动态链接文件 .dll
- windows-7 – 如何将UAC盾牌图标添加到仍然必须以XP为目标的
- Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
- windows-phone – appx应用程序和appxbundle应用程序有什么
- 飞溅屏幕 – 通用窗口10个应用程序的Splash屏幕
- windows 下 MongoDB 的安装与启动
