作者: winterTTr (轉載請註明) 資料來源:《STL標準庫》
-
標準異常類
爲了語言支持而使用的異常類
- bad_alloc :在new失敗的時候,被拋出(除非使用nothrow版本的new)
- bad_cast :在使用dynamic_cast轉換“引用類型”失敗的時候拋出
- bad_typeid:如果傳給typeid操作符的是0或者空指針時拋出
- bad_exception:用來處理未期望的異常出現的情況,使用unexpected()函數進行相應。當函數拋出其異常聲明類表中未聲明的異常類型時unexpected()函數會被調用
這些異常類,基本上都是從logic_error繼承而來的,理論上講,這些異常都能夠在一定程度上被避免。
- invalid_argument無效的參數
- length_error 長度錯誤,例如向字符串添加了太多的字符
- out_of_range 超出邊界,例如:訪問隨機訪問對象時索引超出最大size
- domain_error域名錯誤
- ios_base::failure專門用於I/O的問題,例如:當一個流因爲錯誤或者文件結尾而改變狀態的時候
這些類通常繼承自runtime_error,例如:range_error,overflow_error,underflow_error
標準庫拋出的異常
一般來說,標準庫本身可能會拋出下面這幾種異常range_error,out_of_range,invalid_argument。當然不排除某些庫自己實現的其他異常。
異常對應的頭文件
<exception> bad_exception,exception
<new> bad_alloc
<typeinfo> bad_cast,bad_typeid
<ios> ios_base::failure
<stdexcept> 其他的異常類