C 解析 外傳篇 2 函式的異常規格說明

2022-07-15 06:27:09 字數 1554 閱讀 2847

1.異常規格說明

2.unexpected() 函式

3.小結

問題:如何判斷乙個函式是否會丟擲異常,以及丟擲哪些異常?

異常規格說明的意義:

問題:如果丟擲的異常不在宣告列表中,會發生什麼?

下面的**的輸出什麼?

示例——異常規格之外的異常:

#include using namespace std;

void func() throw(int)

int main()

catch(int)

catch(char)

return 0;

}

執行結果為:

[root@bogon desktop]# g++ test.cpp

[root@bogon desktop]# ./a.out

func()

terminate called after throwing an instance of 'char'

aborted (core dumped)

(不同編譯器執行結果不一樣。)

unexpected() 函式的替換:

示例1——自定義 unexpected() 函式:

#include #include #include using namespace std;

void my_unexpected()

void func() throw(int)

int main()

catch(int)

catch(char)

return 0;

}

執行結果為:

[root@bogon desktop]# g++ test.cpp

[root@bogon desktop]# ./a.out

func()

void my_unexpected()

exit();改為throw 1;後的執行結果:

示例2——自定義 unexpected() 函式:

void my_unexpected()

執行結果為:

[root@bogon desktop]# g++ test.cpp

[root@bogon desktop]# ./a.out

func()

void my_unexpected()

catch(int)

(程式恢復執行了。)

(unexpected() 函式是正確處理異常的最後機會,如果沒有抓住這次機會,全域性的 terminate() 函式就會被呼叫,當前程式就只能以異常結束告終。)

C 外傳篇 2 函式的異常規格說明

問題 如何判斷乙個函式是否會丟擲異常,以及丟擲哪些異常?可能丟擲任何異常 void func1 只能丟擲的異常型別 char 和 int void func2 throw char,int 不丟擲任何異常 void func3 throw 問題 如果丟擲的異常不在宣告列表中,會發生什麼?includ...

函式的異常規格說明

問題 如何判斷乙個函式是否會丟擲異常,以及丟擲哪些異常?假設在開發的時候,呼叫乙個函式來完成某項任務,這個函式不是你寫的或者是第3庫中的乙個函式,那麼問題來了,你如何確定這個函式會不會丟擲異常呢?為什麼要搞清這個問題,因為我們學習了異常處理,那麼我們在呼叫乙個函式的時候,就必須考慮這個函式會不會丟擲...

71 函式的異常規格說明

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 函式的異常規格說明 1 問題 如何判斷乙個函式是否會丟擲異常,以及丟擲哪些異常?1 給函式宣告丟擲異常 2 檢視文件 2 c 提供語法用於宣告函式所丟擲的異常 3 異常宣告...