如何在Visual Studio 2008 C++中捕获除以零错误(而不是其他错误;并能够访问异常信息)?
我尝试了以下代码:
try {
int j=0;
int i= 1/j;//actually, we call a DLL here, which has divide-by-zero
} catch(std::exception& e){
printf("%s %s\n", e.what());
} catch(...){
printf("generic exception");
}
但是,这会进入通用的try...catch块。我知道Microsoft特有的__try可能在这里很有用,但我更喜欢标准C ++,而且无论如何,我有析构函数防止使用__try。
澄清:上面的代码被简化为讨论目的。实际上,除以零是一个bug,它发生在第三方DLL深处,我没有源代码。错误取决于我传递给库的参数(一个复杂结构的句柄),但不以任何明显的方式。因此,我希望能够优雅地恢复。