【正文】
eption Handling。 異常拋出與捕獲的對應(yīng)關(guān)系 面向?qū)ο蟪绦蛟O(shè)計(jì) 第二版 標(biāo)準(zhǔn)程序庫異常處理 C++標(biāo)準(zhǔn)提供了一些標(biāo)準(zhǔn)異常,它們以基類 exception開始,標(biāo)準(zhǔn)程序庫拋出的所有異常處理,都派生自該基類,如下圖所示。該基類提供服務(wù) what(),在每個(gè)派生類中重定義,發(fā)出相應(yīng)的錯(cuò)誤信息。 e x c e p t i o nb a d _ e x c e p t i o nr u n t i m e _ e r r o ri o s _ b a s e : : f a i l u r eb a d _ t y p e i dl o g i c _ e r r o rb a d _ c a s tb a d _ a l l o cu n d e r f l o w _ e r r o ro v e r f l o w _ e r r o rr a n g e _ e r r o rl e n g t h _ e r r o ri n v a l i d _ a r g u m e n td o m a i n _ e r r o rbad_alloc:全局操作符 new失敗 bad_cast:動(dòng)態(tài)類型轉(zhuǎn)換失敗 bad_typeid:如果 typeid的參數(shù)為零或空指針 bad_exception:函數(shù)調(diào)用發(fā)生意外 logic_error:程序中存在邏輯錯(cuò)誤,或違反類的不變性。 out_of_range:數(shù)組下標(biāo)之類的數(shù)值超過了界定的范圍。 Ios_base::failure:當(dāng)數(shù)據(jù)流由于錯(cuò)誤或由于達(dá)到文件尾部而發(fā)生狀態(tài)改變。 range_error:計(jì)算時(shí)發(fā)生區(qū)間錯(cuò)誤 overflow_error:運(yùn)算上溢錯(cuò)誤 underflow_error:運(yùn)算下溢錯(cuò)誤 要使用異常類需要包含相應(yīng)的頭文件。其中: ? exception的 bad_exception定義于 exception中; ? bad_alloc定義于 new; ? bad_cast和 bad_typeid定義于 typeinfo; ?iso_base::failure定義于 iso中; ?其它異常類定義于 stdexcept。 C++標(biāo)準(zhǔn)程序庫對于異常處理作了如下保證: C++標(biāo)準(zhǔn)程序庫在面對異常時(shí),應(yīng)當(dāng)保證資源不會(huì)泄漏。