C 異常機制

2021-10-19 04:11:47 字數 2937 閱讀 4741

), 這樣就可以呼叫a的析構

}//...

fclose

(fp)

;return0;

}int

func2

(void

),這樣就可以呼叫a類析構

func3()

;//...

return0;

}int

func1

(void

),這樣就可以呼叫a類析構

func2()

;//...

return0;

}int

main

(void

), 不執行**

func1()

;//並且檢測到異常以後不會再執行下面的**

cout <<

"test"

<< endl;

}catch

(int ex)

}

$ ./a.out 

a類構造

a類構造

a類構造

a類析構

a類析構

a類析構

檔案開啟失敗

#include

#include

using namespace std;

class fileerror

private:

string m_file;

int m_line;};

class a~a

(void)}

;int

func3

(void

), 這樣就可以呼叫a的析構

}//...

fclose

(fp)

;return0;

}int

func2

(void

),這樣就可以呼叫a類析構

func3()

;//...

return0;

}int

func1

(void

),這樣就可以呼叫a類析構

func2()

;//...

return0;

}int

main

(void

), 不執行**

func1()

;//並且檢測到異常以後不會再執行下面的**

cout <<

"test"

<< endl;

}catch

(int ex)

// 引用做引數避免拷貝構造

catch

(fileerror& ex)

}

$ ./a.out 

a類構造

a類構造

a類構造

出錯位置a.cpp, 出錯行號30

a類析構

a類析構

a類析構

)// 基類型別引用接收子類物件(向上造型)

catch

(exception& ex)

}

$ ./a.out 

針對記憶體錯誤的處理

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...