C 異常處理

2021-06-18 22:13:04 字數 1208 閱讀 5856

程式中的異常主要分為兩種:

1:編譯時的異常   ->主要是語法錯誤,比較容易修改。

2.執行時的異常->程式邏輯錯誤,執行時(崩潰,或結果異常)。

《丟擲異常》

c++的異常處理手機主要有三部分有:try(檢查),throw(丟擲),catch(捕獲)。通常,監測異常情況的程式語句包含在try中,如果try塊中發生了異常。則用throw處理。異常由catch捕獲,並對異常進行處理。

c++建構函式可以丟擲異常。c++標準指明析構函式不能、也不應該丟擲異常。

原因:1,如果析構函式丟擲異常,則異常點之後的程式不會掃行,如果析構函式在異常點之後執行了某些必要的動作比如釋放某些資源,則這些動作不會執行,會造成諸如資源洩漏的問題。

2,通常異常發生時,c++的機制呼叫已經構造物件的析構函式來釋放資源,此時若析構函式本身也丟擲異常,則前乙個異常尚未處理,又有新的異常,會造成程式崩潰的問題。

格式:try

catch(異常型別1)

catch(異常型別2)

捕獲異常catch()

1可以丟擲基本資料型別異常

2可以丟擲複雜資料型別異常(如結構體)

3可以在catch中重新丟擲該異常或者其它異常。

注:1.catch語句塊可以用多個,但是必須出現在try語句塊之後,在try程式之前出現catch語句塊是錯誤的。

2.在catch後面的括號中包含的是資料型別的宣告,只有在出現異常的情況下,catch部分的函式才會執行。

3.catch之後括號中必須含有資料型別,或(…任意異常。)捕獲異常時是按照該資料型別匹配呼叫哪乙個catch來進行處理異常的。

例:#include 

usingnamespace

std;

class cexceptionclass

void show()

~ cexceptionclass()

};int main(int argc,const

char * argv)

switch (nflag)

}catch (int)

catch(char)

catch(char*)

catch(float)

catch

(cexceptionclass*ex)

catch(...)

cout

<<"

退出主程式。

"<

return0;}

C 異常處理

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

c 異常處理

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

C 異常處理

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