C 異常6 其他異常特性

2022-05-23 15:12:09 字數 908 閱讀 6842

雖然throw-catch機制類似於函式引數和函式返回機制,但是還是有些不同之處。

其中之一是函式fun()中的返回語句將控制權返回到呼叫fun()的函式a中,

但throw語句將控制權向上返回到第乙個這樣的函式:包含能夠捕獲相應異常的try-catch組合。

另乙個不同之處是,引發異常時,編譯器總是建立乙個臨時拷貝,即使異常規範和catch塊中指定的是引用。

請看下列**

class problem

void super() throw(problem)

if(oh_no)

problem oops;   //construct object

throw opps;       //throw it

tyr;

class bad_2 : public bad_1 ;

class bad_3 : public bad_2 ;

void duper()

if(oh_no)

throw bad_1()

if(rats)

throw bad_2()

if(drat)

throw bad_3()

trycatch(bad_2 &be)

catch(bad_1 &be)

如果將bad_3放在最前面,它將捕獲bad_1、bad_2和bad_3;

通過按照相反的順序排列,bad_3異常將被bad_3 &處理程式所捕獲。

通過正確地安排catch塊的順序,讓您能夠在如何處理異常方面有選擇的餘地。

有時候可能不知道會發生哪些異常,在這種情況下,仍能捕獲異常,即使不知道異常的型別。

方法是使用省略號來表示異常型別,從而捕獲任何異常:

catch

可以將這個放在最後,有點像switch中的default。

異常和其他

異常rtti 將類宣告放在另乙個類中,在另乙個類中宣告的類被稱為巢狀類。作用域 宣告位置 包含它的類是否可以使用它 從包含它的類派生而來的類是否可以使用它 在外部是否可以用 私有部分是否 否保護部分是是 否公有部分是是 是,通過類限定符來使用 對異常處理有3部分組成 throw終止函式的執行,並使得...

C 學習(友元, 異常, 其他)

包含 object.func func2 class a class b include using namespace std class a a void get class b a geta a getb b void gety int main 友元類 如果某類b的成員函式會頻繁的訪問另乙個...

關於異常和其他

關於異常的幾種處理方法 1 呼叫abort abort 函式的原型位於標頭檔案cstdlib.h 或者stdlib.h 中,其典型實現是向標準錯誤流 即cerr使用的錯流 傳送abnormal program termination 程式異常終止 然後終止程式。它還返回乙個隨實現而異的值。abort...