c 的異常機制

2021-07-25 07:32:04 字數 771 閱讀 7024

異常這玩意在函式呼叫層次深,模組多,出現異常立刻跳出,在最外層處理的情況下很好用。可以讓**變得更整潔。

當throw出現時,程式會直接跳轉到catch處(一直向函式上層搜尋catch塊,如果沒有catch則直接崩潰)

try

catch (**)

程式在執行時,可以理解為先呼叫throw函式,throw函式呼叫catch函式

**********=以下測試**可以反映這種過程

class a

a(const a &other)

~a()

int x;

};*****=第一種

try

catch (a  a)//被throw呼叫,只傳遞,進行拷貝構造出__a(此時throw上的作用域結束,a進行了析構)

*****=第二種

try

catch (a &a)//被throw呼叫,傳入的是引用,不進行拷貝(此時throw上的作用域結束,a進行了析構)

*****=第三種

try

catch (a &a)//引用不進行拷貝

C 異常 異常機制

c 異常是丟程式執行過程中發生的異常情況 例如被0除 的一種響應。異常提供了將控制權從程式的乙個部分傳遞到另一部分的途徑。對異常的處理有3個組成部分 引發異常 使用處理程式捕獲異常 使用try塊。程式在出現問題時將引發異常。throw語句實際上是跳轉,即命令程式跳到另一條語句。throw關鍵字表示引...

C 異常機制

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

C 異常機制

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