C 異常處理(try catch throw)

2022-07-12 02:54:16 字數 2458 閱讀 7066

本文為**

博主原文連線

我們通常希望自己編寫的程式能夠在異常的情況下也能作出相應的處理,而不至於程式莫名其妙地中斷或者中止執行了。在設計程式時應充分考慮各種異常情況,並加以處理。

在c++中,乙個函式能夠檢測出異常並且將異常返回,這種機制稱為丟擲異常。當丟擲異常後,函式呼叫者捕獲到該異常,並對該異常進行處理,我們稱之為異常捕獲。

c++新增throw關鍵字用於丟擲異常,新增catch關鍵字用於捕獲異常,新增try關鍵字嘗試捕獲異常。通常將嘗試捕獲的語句放在 try 程式塊中,而將異常處理語句置於 catch 語句塊中。

異常處理的基本語法如下所述。首先說一下丟擲異常的基本語法:

throw 表示式;

丟擲異常由throw關鍵字加上乙個表示式構成。丟擲異常後需要捕獲異常以及異常處理程式,其基本語法如下:

try

catch(異常型別1)

catch(異常型別2)

//……

catch(異常型別n)

由try程式塊捕獲throw丟擲的異常,然後依據異常型別執行catch程式塊中的異常處理程。catch程式塊順序可以是任意的,不過均需要放在try程式塊之後。

c++異常處理示例:

#includeusing namespacestd;

enumindex;

int array_index(int *a, int n, intindex);

intmain()

catch(index e)

if(e ==overflow)

}return 0;

}int array_index(int *a, int n, intindex)

本例展示了乙個陣列越界的異常捕獲程式。array_index函式用於返回陣列index下標的數值,如果出現異常則丟擲異常。try程式塊中的程式語句為可能出現異常情況的語句,catch則為針對異常的處理語句。

如果new或new不能成功分配所請求的,將會丟擲乙個bad_alloc異常。在使用new或new操作符分配動態記憶體,可以通過如下方式檢測並捕獲儲存空間分配失敗的異常。

int *p;

trycatch(bad_alloc)

在c語言中,異常通常是通過函式返回值獲得,但這樣一來,函式是否產生異常則需要通過檢測函式的返回值才能得知。而在c++中,當函式丟擲乙個返回值時,即使不用try和catch語句,異常還是會被處理的,系統會自動呼叫預設處理函式unexpected來執行。

我們通常希望自己編寫的程式能夠在異常的情況下也能作出相應的處理,而不至於程式莫名其妙地中斷或者中止執行了。在設計程式時應充分考慮各種異常情況,並加以處理。

在c++中,乙個函式能夠檢測出異常並且將異常返回,這種機制稱為丟擲異常。當丟擲異常後,函式呼叫者捕獲到該異常,並對該異常進行處理,我們稱之為異常捕獲。

c++新增throw關鍵字用於丟擲異常,新增catch關鍵字用於捕獲異常,新增try關鍵字嘗試捕獲異常。通常將嘗試捕獲的語句放在 try 程式塊中,而將異常處理語句置於 catch 語句塊中。

異常處理的基本語法如下所述。首先說一下丟擲異常的基本語法:

throw 表示式;

丟擲異常由throw關鍵字加上乙個表示式構成。丟擲異常後需要捕獲異常以及異常處理程式,其基本語法如下:

try

catch(異常型別1)

catch(異常型別2)

//……

catch(異常型別n)

由try程式塊捕獲throw丟擲的異常,然後依據異常型別執行catch程式塊中的異常處理程。catch程式塊順序可以是任意的,不過均需要放在try程式塊之後。

c++異常處理示例:

#includeusing namespacestd;

enumindex;

int array_index(int *a, int n, intindex);

intmain()

catch(index e)

if(e ==overflow)

}return 0;

}int array_index(int *a, int n, intindex)

本例展示了乙個陣列越界的異常捕獲程式。array_index函式用於返回陣列index下標的數值,如果出現異常則丟擲異常。try程式塊中的程式語句為可能出現異常情況的語句,catch則為針對異常的處理語句。

如果new或new不能成功分配所請求的,將會丟擲乙個bad_alloc異常。在使用new或new操作符分配動態記憶體,可以通過如下方式檢測並捕獲儲存空間分配失敗的異常。

int *p;

trycatch(bad_alloc)

在c語言中,異常通常是通過函式返回值獲得,但這樣一來,函式是否產生異常則需要通過檢測函式的返回值才能得知。而在c++中,當函式丟擲乙個返回值時,即使不用try和catch語句,異常還是會被處理的,系統會自動呼叫預設處理函式unexpected來執行。

C 異常處理

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

c 異常處理

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

C 異常處理

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