我有一個小問題,我無法用乾淨的方式解決。 我正在嘗試一些多態異常處理,所以我在我的異常類中添加了一個提升虛擬函數,用於實際投擲,並用raise()調用替換了投擲。 一切正常,但然後我應用這個解決方案的功能與返回類型具有以下一般形式:多態異常處理和編譯器警告
Obj Foo()
{
if(true)
return Obj
else
{
//throw Exception; //With this call everything is fine
Exception e{};
e.raise(); //The compiler warns me that I do not return anything
}
}
當我編譯這種功能的GCC編譯器(V4.9)抱怨富到達沒有返回結束(-Wreturn-type) 有沒有辦法說服編譯器,一切正常,沒有隱藏警告呢?
_是否有辦法讓編譯器確信一切正常,而不會將警告隱藏起來?_是不是不相交? – erip
多態異常?爲什麼?派生自'std :: runtime_error'或'std :: logic_error'。然後拋出你想拋出的異常 - 每個問題類型一個異常類型。 –
@erip:它們不是不相交的,因爲一切都確實沒問題,如果我將raise函數的throw語句帶到body中,編譯器會認識到所有的執行路徑都會正確返回。如果它隱藏在raise()函數中,編譯器會抱怨 – Triskeldeian