我正在检查 Visual Studio 2013 中的硬件和软件异常。我知道我可以通过将“启用 C++ 异常”选项设置为 /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);
}
它只捕获除以零异常。这取决于处理器,还是其他原因?还有一个小问题,调试版本和发布版本之间有什么区别吗?