程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++自定義異常類

C++自定義異常類

編輯:C++入門知識

1.C++程序中處理異常或者錯誤,可以使用異常機制,異常處理的結構為:

try

{

//可能引發異常的代碼

}

catch( type e)

{

//異常處理

}

catch(…) //省略號代表可以接受任何類型的異常

{

//

}

C++拋出的異常可以int、doble、類等類型,拋出的異常要進行處理,否則會自動調用abort()函數終止程序。C++提供了了一些標准的異常類,exception類可以派生出bad_cast,runtime_error,bad_alloc,logic_error這些異常類。使用C++提供的標准異常類,程序員還可以自定義異常類。自定義異常類,需要定義標准異常的派生類,在派生類中初始化基類的構造函數。拋出、捕獲自定義異常類的方法與標准異常類相同。下面是自定義異常類的代碼:

# include 
using 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函數終止程序。如果基類中存在虛函數,虛函數拋出某種異常,派生類的虛函數版本也可以拋出此類異常或者不拋出任何異常,但不能拋出任何其它異常,就是說,派生類的虛函數拋出的異常要比基類更加嚴格。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved