我一直在學習C++,現在我處於異常處理的主題。這本書說除異常列表中的例外之外的任何東西都不能離開函數,所以我測試了它,並期望程序由於未捕獲的異常而終止。現在的事情是,例外列表被忽略,我該如何處理?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(拋出異常)C:\用戶\ siegfred \文件\的Visual Studio 2012 \項目\ procpp \ procpp \ maindriver.cpp 20 1 ProCpp
不推薦使用異常規範,只推薦使用'throw()'pre C++ 11和'noexcept',以C++ 11開頭。 'throw()'和'noexcept'意思基本上是一樣的:我保證我不會拋出任何東西,我也不會允許任何異常逃脫。 – 2013-05-02 01:59:47