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

2021-09-12 22:24:40 字數 1247 閱讀 2835

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

/** 可能丟擲任何異常 */

void func1();

/** 只能丟擲的異常型別: char 和 int */

void func2() throw(char, int);

/** 不丟擲任何異常 */

void func3() throw();

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

#include using namespace std;

void func() throw(int)

int main()

catch(int)

catch(char)

return 0;

}

輸出:[g++]

func()

terminate called after throwing an instance of 'char'

已放棄輸出:[vc2010]

func()

catch(char)

注意:g++ :編譯後可執行程式異常停止

vc++2010 :func(); 丟擲的異常被**獲

呼叫 set_unexpected() 設定自定義的異常函式

#include using namespace std;

void my_unexpected()

void func() throw(int)

int main()

catch(int)

catch(char)

return 0;

}

輸出:[g++]

func()

void my_unexpected()

catch(int)

輸出:[vc++2010]

func()

catch(char)

總結:

對於異常規格說明,不同的編譯器有不同的行為。在實際專案中,可編寫測試程式檢視使用的編譯器有沒有遵循 c++ 規範。

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

1.異常規格說明 2.unexpected 函式 3.小結 問題 如何判斷乙個函式是否會丟擲異常,以及丟擲哪些異常?異常規格說明的意義 問題 如果丟擲的異常不在宣告列表中,會發生什麼?下面的 的輸出什麼?示例 異常規格之外的異常 include using namespace std void fu...

函式的異常規格說明

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

71 函式的異常規格說明

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