我有一些C++代碼,看起來像這樣:try語句中的一個語句中的異常是否會導致控制流繞過try語句塊中的所有剩餘語句?
void Student::addCourse(Course cVal, string gr) throw(...) {
try {
GradedCourse c(cVal, gr); // If an exception is thrown here...
coursesTaken.insert(c); // will this statement be executed?
} catch(...) {
throw;
}
}
的GradedCourse
構造可如果gr
,其中包含爲一療程級拋出一個異常,發現由構造是無效的。如果發生這種異常,將執行try
區塊內的任何進一步陳述嗎?我可以肯定,這樣的例外將不會導致GradedCourse
插入coursesTaken
(這是一個STL集合)嗎?我搜索了Stack Overflow和Google,都沒有取得太大的成功。
是的,如果第一條語句拋出一個異常,你的第二條語句將永遠不會執行。 –
@HunterMcMillen如果你想回答一個問題,爲什麼不發表一個答案,而不是評論? – delnan
請注意(因爲我看到太多這樣的):try/catch/rethrow是不必要的,就像'throw(...)'規範一樣... –