複製鏈接
請複製以下鏈接發送給好友

catch

(c++異常處理)

鎖定
如果在try語句塊的程序段中(包括在其中調用的函數)發現了異常,且拋棄了該異常,則這個異常就可以被try語句塊後的某個catch語句所捕獲並處理,捕獲和處理的條件是被拋棄的異常的類型與catch語句的異常類型相匹配。
中文名
catch
隸    屬
C++異常處理

目錄

catch作用

catch(…)能夠捕獲多種數據類型的異常對象,所以它提供給程序員一種對異常對象更好的控制手段,使開發的軟件系統有很好的可靠性。因此一個比較有經驗的程序員通常會這樣組織編寫它的代碼模塊。
try
{
//程序中拋出異常 throw value;
}
catch(valuetype v)
{
//例外處理程序段
}

語法小結:throw拋出值,catch接受,當然,throw必須在“try語句塊”中才有效。

catch解釋

一、程序接受到throw語句後就會自動調用析構器,把該域(try後的括號內)對象clean up,然後再進
入catch語句(如果在循環體中就退出循環)。
這種機制會引起一些致命的錯誤,比如,當“類”有指針成員變量時(又是指針!),在 “類的構建器
”中的throw語句引起的退出,會導致這個指針所指向的對象沒有被析構。這裏很基礎,就不深入了,提
示一下,把指針改為類就行了,比如模板類來代替指針,在模板類的內部設置一個析構函數。
二、語句“throw;”拋出一個無法被捕獲的異常,即使是catch(...)也不能捕捉到,這時進入終止函數

catch出現形式

一般的catch出現的形式是:
try{}
catch(except1&){}
catch(except2&){}
catch(...){} //接受所有異常
一般都寫成引用(except1&),原因很簡單,效率。