1.C++程序中處理異常或者錯誤,可以使用異常機制,異常處理的結構為:
try
{
//可能引發異常的代碼
}
catch( type e)
{
//異常處理
}
catch(…) //省略號代表可以接受任何類型的異常
{
//
}
C++拋出的異常可以int、doble、類等類型,拋出的異常要進行處理,否則會自動調用abort()函數終止程序。C++提供了了一些標准的異常類,exception類可以派生出bad_cast,runtime_error,bad_alloc,logic_error這些異常類。使用C++提供的標准異常類,程序員還可以自定義異常類。自定義異常類,需要定義標准異常的派生類,在派生類中初始化基類的構造函數。拋出、捕獲自定義異常類的方法與標准異常類相同。下面是自定義異常類的代碼:
# includeusing namespace std; class myerror:public std::logic_error //從logic_error派生自定義異常類 { public: myerror(const std::string &s):std::logic_error(s){} virtual ~myerror() throw(){} }; class Sale { public: Sale(int i):x(i){} void cmp(); private: int x; }; void Sale::cmp() { try{ if (x>5) throw myerror("number out of range"); //拋出異常 else cout< 上面的myerror類在定義析構函數時,後面加了throw(),這是函數的異常說明。throw後面的括號表明可以拋出的異常類型,如果不拋出任何異常,括號內為空。這個析構函數不拋出任何異常。如果函數指明不拋出任何異常,但函數體內卻拋出異常,這是程序會調用terminate函數終止程序。如果基類中存在虛函數,虛函數拋出某種異常,派生類的虛函數版本也可以拋出此類異常或者不拋出任何異常,但不能拋出任何其它異常,就是說,派生類的虛函數拋出的異常要比基類更加嚴格。