C 異常處理 Learning

2022-08-29 07:36:09 字數 1412 閱讀 1156

一、異常處理簡介

c++中,異常處理一般用3個保留字實現:throw、try和catch。當被呼叫的函式檢測到異常條件時,立即使用throw引發乙個異常。在上一層呼叫函式中使用try檢測函式呼叫是否引發了異常,被檢測到的異常由catch捕獲並處理。

二、try、catch語句

需要檢測異常的程式段(如函式呼叫)須放在try語句中執行,稱之為保護**。異常由catch語句捕獲並處理。形式為:

1

try2

3catch(《型別1>《引數1>)45

...6

...7

...8

catch(《型別n>《引數n>)910

catch

(...)

11

乙個try語句可與多個catch語句相聯絡。若某個catch語句的引數型別與引發異常的資訊資料型別相匹配,則執行該catch語句的異常處理,此時由throw語句丟擲的異常資訊傳遞給catch語句中的引數。最後的catch(...)捕獲所有型別的異常。其中的省略號可與任何資料型別匹配。

三、throw語句

引發異常的throw語句必須在try語句中,或由try語句直接(間接)呼叫的函式體執行。一般形式為:

throw exception;

exception為乙個異常值,可以是任意型別的變數、物件或值。

四、異常處理的實現

①將可能發生異常的程式段放在try中;

②控制通過正常的順序執行到達try語句,然後執行try中的保護**;

③在保護**執行過程中:

若沒有引發異常,那跟在try後的catch不會執行。程式會在try後跟隨的最後乙個catch子句後面的語句繼續執行下去。

若發生異常,則會通過throw建立乙個異常物件並丟擲。

使用多個catch語句時:

ⅰ、catch按照在try語句後出現的順序被檢查;

ⅱ、被匹配的catch子句將捕獲並處理異常;

ⅲ、若沒有找到匹配的catch語句,則執行函式terminate將被自動呼叫(預設功能是呼叫abort終止程式)。

五、例子

1

//處理除數為0的異常

2 #include 3

using

namespace

std;

4int div(int x,inty)5

10return x/y;11}

12void

main()

1322

catch (int)23

2627 }

結果:

C 異常處理

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

c 異常處理

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

C 異常處理

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