C 異常處理類與自定義異常處理類

2021-06-28 11:56:09 字數 1814 閱讀 4581

例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 ...