C 異常處理

2021-08-22 16:35:21 字數 1008 閱讀 5233

c++中提供了try和catch語句塊對可能產生異常的**進行分開處理

try:正常邏輯處理

catch:異常邏輯處理

throw:丟擲乙個異常

throw語句將異常丟擲,如果當前函式 中沒有try..catch語句能夠處理該異常,則當前函式立即返回

異常被傳送到上層呼叫函式,仍需要try....catch語句進行處理,如果上層函式也沒有能力處理該異常,則繼續向更上層函式的函式傳遞

如果函式呼叫棧中的所以函式都無法處理丟擲的異常,則程式異常終止

同乙個try語句塊可以跟上多個catch語句塊

同乙個try語句塊可以丟擲多種型別的異常

不同型別的異常由不同的catch語句塊負責處理

異常被丟擲後會自上而下逐一匹配catch語句塊

異常匹配時,不會進行預設型別轉換

catch 語句可以使用...捕獲所有的異常

catch(...)可以捕獲所有的異常但卻無法得到異常資訊

catch(...)一般作為最後乙個異常處理塊出現

catch語句中依然可以丟擲異常,如果是catch(...),throw不需要物件。

可以將函式體作為乙個完整的try語句塊(提高**的維護性和可讀性)

1,基本用法

try

else

}catch(...)

}//兩者等效

int func2(int i) try

else

}catch(...)

為什麼不要在建構函式中丟擲異常?

在建構函式中在申請系統資源後,丟擲異常。編譯器認為物件構造不完全,所以不會呼叫析構函式。這樣就會造成記憶體洩露。雖然語法上沒有錯誤。

test()

};double div(double a, double b)

return a / b;

}int main(int argc, char *argv)

{ try

{cout<

C 異常處理

結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...

c 異常處理

一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...

C 異常處理

程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...