我在C++中使用了標準異常處理方法。這是try {}和catch {}塊。在我的代碼,FUNC1()將拋出一個異常,而FUNC2是這樣的:C++異常處理程序的一個奇怪問題
bool func2()
{
try{
func1();
}
catch(myException& e)
{
cerr << "error!" << endl;
return false;
}
return true;
}
但是當我運行我的代碼,一個奇怪的事情發生了。我從來沒有達到拋出異常的代碼,但我總是在catch塊中到達返回false的行(但是cerr <<
的行從未到達)。然後該函數繼續返回true。我不知道原因是什麼。任何人都可以幫我解決這個問題嗎?非常感謝你!
對不起,你能解釋一下嗎?該函數僅在發生異常時才返回false,否則返回true。我不明白爲什麼它每次進入catch block都會返回false。然後它不會真的返回,因爲它將在稍後返回。 – user26404 2008-11-26 03:27:22
當您運行高度優化的代碼時,CPU正在運行的指令可能與源代碼不完全對齊,因此您會在調試器中看到一些無意義的結果。 – 2008-11-26 03:33:00
當我將「return false」語句更改爲assign語句時,沒有錯誤。 catch {}塊返回有什麼問題嗎?在catch塊中返回 – user26404 2008-11-26 05:53:06