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 異常宣告...