我一直在学习 C++,现在我的话题是异常处理。这本书说除了异常列表中的异常之外的任何东西都被阻止离开函数,所以我测试了它并期望程序由于未捕获的异常而终止。现在的问题是,异常列表被忽略了,我该如何处理呢?
int diva(int a, int b)
throw(int, runtime_error)
{
if (b == 0)
throw invalid_argument("div by 0");
return a/b ;
}
int main(int argc, char* argv[])
{
set_terminate(errnote);
try {
diva(4,0);
} catch(const invalid_argument& e) {
cout<<e.what()<<endl;
}
}
程序仍然执行并且异常仍然被捕获。
我也收到警告:
警告 1 警告 C4290:C++ 异常规范被忽略,除了指示函数不是 __declspec(nothrow) c:\users\siegfred\documents\visual studio 2012\projects\procpp\procpp\maindriver.cpp 20 1 ProCpp