题
我做了一些实验,发现当整数除以零时会引发异常。
#include <iostream>
#include <stdexcept>
using namespace std;
int main
(
void
)
{
try
{
int x = 3;
int y = 0;
int z = x / y;
cout << "Didn't throw or signal" << endl;
}
catch (std::exception &e)
{
cout << "Caught exception " << e.what() << endl;
}
return 0;
}
显然它没有抛出 std::exception。它还可能扔什么?
解决方案
这是一个Windows结构化异常,其中有没有用C ++做的事 - 你会得到相同的异常,如果它是一个C程序
其他提示
本文声称有一种方法可以使用以下方法将结构化异常转换为 C++ 异常: _set_se_translator 功能。
的结果是不确定的,则可以使用 __try / __except 块捕获错误(结构化异常处理)。但是,为什么不干脆你分割前检查是否有错误?
在MSVC6您可以赶上(...)抓住它,并抛出重新抛出;但是,因为你无法察觉的异常类型这样,你最好做别的事情。
不隶属于 StackOverflow