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, (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- DropShadow for WPF无边界窗口
- 在非Qt应用程序中使用基于Qt的DLL
- wpf – 使用WiX在应用程序的主要升级中从Windows 7任务栏中
- libglog.dll CMake 在Windows上编译、应用glog
- POJ2823 Sliding Window(单调队列,线段树,set,deque)
- windows7下composer安装不了或composer命令无效的解决办法
- Windows – Win32:如何将字符串转换为日期?
- 如何在Windows中使用golang获取文件描述(产品名称,原始filn
- .net – 在Win32/COM方法上调用PInvoke时,通常有一个明显的
- 从Windows文件夹到Linux分区
- 我们可以在Microsoft Bot Framework(.NET / C#)中
- BAT脚本编写教程(比较易懂和全面)
- Vulkan Tutorial 01 开发环境搭建之Windows
- Windows – Win32:如何将字符串转换为日期?
- windows – 连续的接口函数ID
- node-ffi模块的安装以及基于electron生成windows
- Windows系统下latex:texlive2018和texstudio
- Windows上的路由信息是否有C/C++ API?
- 用于类似Office 2013的Windows的Windows GUI库?
- Windows Phone 7 – Windows Phone开发Visual St
