【C++異常處理機制】

一、異常處理機制

1、異常:

程序執行時遇到的任何錯誤或意外行爲。

2、異常處理:

異常處理就是當程序出現這些錯誤後,給與恰當的處理,爲程序提供退出的安全通道。

3、異常可能性:

1、代碼或調用的代碼(如共享庫)中有錯誤;
2、操作系統資源不可用;
3、公共語言運行庫遇到意外情況(如無法驗證代碼);
4、用戶的錯誤操作等

4、傳統的異常處理方法:

弊端:可讀性差,將程序代碼與處理異常的代碼混在一起。
要求:需要更加靈活、程序可讀性強、降低程序員勞動強度的處理方式。

二、C++異常處理機制:

在遇到異常時,系統不是馬上終止運行,而是允許用戶排除錯誤,繼續運行程序,至少給出出錯的提示信息。
在大型複雜的軟件系統中,函數之間有明顯的分工和複雜的調用關係,發現錯誤的函數一般不具備處理錯誤的能力。
這時只能導致一個異常,並拋出異常,如果調用者也不能處理就傳遞給它的上級調用者,這樣一直上傳到能處理爲止。
如果始終沒有處理就上交到C++運行系統,運行系統調用abort函數強行終止整個程序。

在這裏插入圖片描述

三、C++異常處理的實現

C++語言中:
try、throw和catch子句就是用於實現異常處理機制的程序語句:

1、try

try語句塊中包含可能出現異常的代碼,如果運行時出現了錯誤,就拋擲異常對象的類型和異常內容。

2、throw

throw拋擲異常事件的類型和異常內容。

3、catch

catch捕獲並處理異常事件,定義異常處理程序。

四、標準程序庫異常的用法

在這裏插入圖片描述

try{
	int* p = new int[10];
}
catch (std::bad_alloc& e) {
	std::cerr << e.what() << std::endl;
}

溢出詳解1
溢出詳解2

五、異常處理中的構造與析構

1、異常拋出之前構造異常對象
2、catch字句捕獲異常時,將異常對象傳遞給catch形參
3、catch字句執行完成,調用異常對象的析構函數,異常對象自動銷燬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章