文章目錄
一、異常處理機制
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、catch字句捕獲異常時,將異常對象傳遞給catch形參
3、catch字句執行完成,調用異常對象的析構函數,異常對象自動銷燬。