C++給我們提供了標準的異常處理類,它用來拋出C++標準庫中函數執行時的異常。C++提供的標準異常類的層次結構如圖:
可以看到,所有的異常類都繼承自exception基類,exception類下的logic_error和runtime_error又是兩個比較大類,包含有多個自類,它們分表代表邏輯類錯誤和運行時錯誤
舉例說明,如:
我們使用new開辟內存時,如果遇到空間不足,則會拋出bad_alloc的異常
我們使用dynamic_cast()進行動態類型轉化失敗時,則拋出bad_typeid異常
成人app我們在計算數值超過該類型表示的最大范圍時,則拋出overflow_error異常,表示運算上溢,同理,underflow_error表示運算下溢
我們在使用string類下標但越界時,則拋出out_of_range異常
成人app等等...等等... 請大家自行了解更多
成人app需要注意的是,使用C++自帶的標準異常類,需要包含對應的頭文件:
因為exception、bad_exception類在頭文件exception中定義
bad_alloc類在頭文件new中定義
成人appbad_typeid類在頭文件typeinfo中定義
成人appios_base::failure類在頭文件ios中定義
其他異常類在stdexcept中定義
下面,給大家展示如何使用C++標準異常類:
#include <iostream> #include<new> #include<stdexcept> using namespace std; //異常處理 int main() { string *s; try { s=new string("hnsaiyang.com"); cout<<s->substr(15,5); } catch(bad_alloc &t) { cout<<"Exception occurred:"<<t.what()<<endl; } catch(out_of_range &t) { cout<<"Exception occurred:"<<t.what()<<endl; } return 0; }
運行結果如下圖:
請大家自行上機試驗學習使用方法!
本文固定URL:http://hnsaiyang.com/course/85