例1:自定義乙個繼承自excepton的異常類myexception
c++標準中,定義在中的任何異常類都派生自exception class,本例也只是簡單地由exception繼承,在try段丟擲乙個異常並捕捉。**如下:
/*++ test.cpp
version:1.0
decript:define a exception class named myexception
derived from base class exception
which is declared in created:2011-08-14
author: btwsmile
--*/
#include#includeusing namespace std;
//customized exception class 'myexception'
class myexception:public exception
};
int main()
};
void check(int y) throw(myexception)//#2
int main()
};
void check(int y) throw()//#1 only int-type exception is permitted
void myunexpected()
int main()
};
void check(int y) //any type of exception is permitted
void myunexpected()
int main()
};
void check(int y) //any type of exception is permitted
void myunexpected()
void myterminate() //##1 set it be the terminate handler
int main()
{ unexpected_handler oldhandler=set_unexpected(myunexpected);
terminate_handler prehandler=set_terminate(myterminate);
int x=100,y=0;
try
{ check(y);
cout<
結果如下:
unhandler exception!
請按任意鍵繼續. . .
結論:c++為異常處理提供了友好的支援。
使用者可以自定義異常型別,異常型別並不受到限制,可以是內建資料型別如int,double等,也可以是自定義的類,也可以從c++某個異常類繼承下來。例1採用了派生自exception的方法。
除此之外,在定義函式時,可以顯式指定函式體丟擲的異常型別。隱式情況下,預設允許函式丟擲任何型別的異常。有可以增加throw語句,對異常型別加以限制。特別的是,throw()表示不允許函式丟擲任何型別的異常。如果違反了throw列表規定的異常型別,系統將呼叫unexpected hanlder進行處理,可以自定義unexpected異常處理方法。例2和例3對它們進行了說明。
如果對於函式體throw列表合法的異常被丟擲,但是卻沒有被程式捕捉處理,系統將呼叫terminate handler進行處理。預設情況下,只是簡單呼叫abort()函式終止程式,同樣可以自定義terminate處理方法。例4對它進行了說明。
redis 自定義異常處理類
以下是redis異常與業務解耦合方案 以下方案只適用於 cacheable方式加快取 import org.slf4j.logger import org.slf4j.logge ctory import org.springframework.beans.factory.initializingb...
Python學習 異常處理,自定義異常類
usr bin python coding utf 8 filename usingexception.py 異常處理 寫乙個自己定義的異常類 class myinputexception exception def init self,length,least exception.init sel...
異常處理 自定義異常
異常 1.定義 執行時檢測到的錯誤。2.現象 當異常發生時,程式不會再向下執行,而轉到函式的呼叫語句。3.常見異常型別 名稱異常 nameerror 變數未定義。型別異常 typeerror 不同型別資料進行運算。索引異常 indexerror 超出索引範圍。屬性異常 attributeerror ...