C 異常處理

2021-10-06 20:37:08 字數 2241 閱讀 1468

標準程式庫異常

函式是一種以棧結構展開的上下函式銜接的程式控制系統,異常是另一種控制結構,它可以在出現「意外」時中斷當前函式,並以某種機制(型別匹配)回饋給隔代的呼叫者相關的資訊。

異常發生第一現場,丟擲異常

void

function()

在需要關注異常的地方,捕捉異常

trycatch

(異常型別宣告)

catch

(異常型別 形參)

catch(...)

通過throw操作建立乙個異常物件並拋擲

在需要捕捉異常的地方,將可能丟擲異常的程式段嵌在try塊之中

按正常的程式順序執行到達try語句,然後執行try塊{}內的保護段

如果在保護段執行期間沒有引起異常,那麼跟在try塊後的catch子句就不執行,程式從try塊後跟隨的最後乙個catch子句後面的語句繼續執行下去

catch子句按其在try塊後出現的順序被檢查,匹配的catch子句將捕獲並按catch子句中的**處理異常(或繼續拋擲異常)

如果沒有找到匹配,則預設功能是呼叫abort終止程式

處理不了的異常,我們可以在catch的最後乙個分支,使用throw語法,繼續向呼叫者throw

可以在函式宣告中列出可能丟擲的所有異常型別,加強程式的可讀性。

int

copyfile2

(char

*dest,

char

*src)

throw

(float

, string *

,int

)

對於異常介面的宣告,在函式宣告中列出可能丟擲的所有異常型別

如果沒有包含異常介面宣告,此函式可以丟擲任何型別的異常

如果函式丟擲宣告以外的異常型別,那麼可能會導致程式終止

如果乙個函式不想丟擲任何異常,可以使用 throw () 宣告

throw 普通型別,和函式返回傳值是一樣的

void

function()

trycatch

(int error)

catch(...)

throw 字串型別,實際丟擲的指標,而且,修飾指標的const 也要嚴格進行型別匹配

void

function()

trycatch

(const

char

*error)

catch(...)

throw 類型別,最佳方式使用引用型別捕捉,丟擲匿名物件,如果是動態分配的物件,直接丟擲其指標

== 注意:引用和普通的形參傳值不能共存! ==

C 異常處理

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

c 異常處理

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

C 異常處理

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