今天,我發現在catch
塊的錯誤失去異常類型:重新拋出從catch塊的異常時
catch (const exception& e){
// do something
// throw e; <-- bug!
throw; // <-- right thing to do
}
基本上,如果我重新拋出異常e
明確,我得到一個新的std::exception
重建,在事實上,來自what()
方法的消息是默認的std::string
,而不是我自定義的內置消息。
是什麼解釋?我認爲throw;
只是throw ExceptionJustCaught;
的簡寫。
這是價值和參考之間的差異。 –
這是一個非常重要的概念,經常被忽視(在我看來,這是一個棘手的語法問題,編譯時至少應該是一個警告。)。偉大的問題! 「參考」爲 – NHDaly