C 異常 異常機制

2021-09-08 18:48:09 字數 1558 閱讀 8267

c++異常是丟程式執行過程中發生的異常情況(例如被0除)的一種響應。異常提供了將控制權從程式的乙個部分傳遞到另一部分的途徑。對異常的處理有3個組成部分:

* 引發異常;

* 使用處理程式捕獲異常;

* 使用try塊。

程式在出現問題時將引發異常。throw語句實際上是跳轉,即命令程式跳到另一條語句。throw關鍵字表示引發異常,緊隨其後的值(例如字串或物件)指出了異常的特徵。

程式使用異常處理程式(exception handler)來捕獲異常,異常處理程式位於要處理問題的程式中。catch關鍵字表示捕獲異常。處理程式以關鍵字catch開頭,隨後是位於括號中的型別宣告,它指出了異常處理程式要響應的異常型別;然後一乙個用花括號括起的**塊,指出要採取的措施。catch關鍵字和異常型別用作標籤,指出當異常被引發時,程式應跳到這個位置執行。異常處理程式也被稱為catch塊。

try塊標識其中特定的異常可能被啟用的**塊,它後面跟乙個或多個catch塊。try塊是由關鍵字try指示的,關鍵字try的後面是乙個由花括號括起的**塊,表明需要注意這些**引發的異常。

要了解這3個元素是如何協同工作的,最簡單的方法是看乙個簡短的例子,如下。

error3.cpp

//

error3.cpp -- using an exception

#include double hmean(double a, double

b);int

main()

//end of try block

catch (const

char * s) //

start of exception handler

std::cout

<< "

harmonic mean of

"<< x << "

and

"<<< "

is "

<< z

<< "

enter next set of numbers : ";

}std::cout

<< "

bye!\n";

return0;

}double hmean(double a, double

b)

效果:

enter two numbers: 3 6

harmonic mean of 3 and 6 is 4

enter next set of numbers : 10 -10

bad hmean() arguments: a = -b not allowed

enter a new pair of numbers: 1 19

harmonic mean of 1 and 19 is 1.9

enter next set of numbers : q

bye!

出現異常時的程式流程:

1.程式在try塊中呼叫hmean()。

2.hmean()引發異常,將從而執行catch塊,並將異常字串付給s。

3.catch塊返回到while迴圈的開始為值。

C 異常機制

在c 中的函式呼叫中,是用棧來存放其中資料物件。表1.1 我們結合這張表,來簡單介紹函式的棧結構。其中每乙個函式在入棧的時候,編譯器會自動新增額外的資料結構,這裡的exception registration就是被額外新增進來的。對於這個結構體我們稍後解釋,首先來介紹函式的基本結構。從這張圖中可以清...

C 異常機制

一 簡單例項 異常是通過丟擲物件而引發的,丟擲物件的型別決定應該啟用那個處理 即catch中的語句 被處理 是呼叫鏈中與該丟擲物件型別匹配,並且離丟擲異常位置最近的那乙個 例如 void test int main catch string e t value void print void pus...

C 異常機制

1 異常的丟擲 classmyerror voiddo error intmain 上面的例子中,通過throw丟擲了乙個異常類的例項,這個異常類,可以是任何乙個自定義的類,通過例項化傳入的引數可以表明發生的錯誤資訊。其實異常就是乙個帶有異常資訊的類而已。異常被丟擲後,需要 獲,從而可以從錯誤中進行...