catch的作用
catch(…)能夠捕獲多種數據類型的異常對象,所以它提供給程式設計師一種對異常對象更好的控制手段,使開發的軟體系統有很好的可靠性。因此一個比較有經驗的程式設計師通常會這樣組織編寫它的代碼模組。
語法小結:throw拋出值,catch接受,當然,throw必須在“try語句塊”中才有效。
深入了解catch
一、程式接受到throw語句後就會自動調用析構器,把該域(try後的括弧內)對象clean up,然後再進
入catch語句(如果在循環體中就退出循環)。
這種機制會引起一些致命的錯誤,比如,當“類”有指針成員變數時(又是指針!),在 “類的構建器
”中的throw語句引起的退出,會導致這個指針所指向的對象沒有被析構。這裡很基礎,就不深入了,提
示一下,把指針改為類就行了,比如模板類來代替指針,在模板類的內部設定一個析構函式。
二、語句“throw;”拋出一個無法被捕獲的異常,即使是catch(...)也不能捕捉到,這時進入終止函式
catch出現形式
一般的catch出現的形式是:
try{}
catch(except1&){}
catch(except2&){}
catch(...){} //接受所有異常
一般都寫成引用(except1&),原因很簡單,效率。