我一直在阅读Jesse Liberty 撰写的《在 21 天内自学 C++ 》一书,并遇到了异常和错误一章。作者使用了这个例子:
int top = 10;
int bottom = 0;
try
{
cout << "top divided by bottom = ";
cout << (top / bottom) << endl;
}
catch(...)
{
cout << "something has gone wrong!" << endl;
}
对他来说效果很好。异常被捕获,输出为:
top divided by bottom = something has gone wrong!
我自己试了一下,收到以下错误:
Unhandled exception at 0x0124152d in stuff.exe: 0xC0000094: Integer division by zero.
根据这个线程,“整数除以零在标准 C++ 中不是例外。” 但是 Visual Studio 显然在这里抛出了一个异常,虽然没有捕捉到它。
我尝试定义top
and bottom
as double
,我收到以下输出:
top divided by bottom = 1.#INF
那么为什么try catch
块没有捕获integer division by zero
异常呢?