Cpp Primer CH11 異常處理

2021-06-19 03:06:55 字數 1219 閱讀 2925

1 c++異常型別通常用類(class)實現。

2 捕獲異常

trythrout (yyy)

}catch(***)

其中catch內容可能是:

2.11 單個異常類型別, 對應的yyy是型別名

2.2 單個物件宣告,對應的應該是***型別的某個物件

2.3  .... 表示能捕獲所有的可能異常。

3 捕獲異常

c++的異常處理是不可恢復的:一旦異常被處理,就不可以在丟擲異常的地縫繼續處理

4 異常物件

如果異常處理需要處理異常中報錯的資料,就必須使用上述2.2方式丟擲:

異常物件總是在拋出點被建立的,異常丟擲語句同異常處理語句類似與函式呼叫的方式:

tryclassa exp;

throw exp;

}catch (classa e)

e.***();

物件e使用exp進行初始化,當然也可以使用引用的方式,比如 catch (class & e);

5  異常棧展開

如果當前層次的函式沒有catch到這個異常,則查詢上乙個層次的catch,這個過程叫做棧展開。

6 重新丟擲

如果當前catch 不能完全處理該異常,需要再次呼叫throw,向上一層次呼叫棧重新丟擲。

7 異常規範

1 異常宣告

class  istack{

void pop(int &value) throw(poponempty);

void push(int value) throw(pushonfull);

表明pop不會丟擲除了宣告的之外的任何異常。

void pop(int &value) throw()表明不會丟擲任何異常

void pop(int &value) ;表明可能會丟擲任何異常

2 異常規範宣告的事介面的一部分,同函式型別強繫結

3異常宣告錯誤可能只在執行時發現,比如丟擲乙個不被允許的異常,編譯器不會察覺。所以具有一定危險。

8 關於 錯誤如何變成異常    關鍵點是什麼是一種意外情況

如果該庫希望用在不會崩潰的程式裡(好像通訊系統都不希望自己崩潰),那麼該庫就必須自己處理問題,如果自己不能處理,則通知庫的使用者來處理。

這個好像當前系統都是這麼做的。

Python基礎11 異常處理

異常 當使用python直譯器去執行 的時候遇見了錯誤 在控制台輸出錯誤資訊 遇到異常會終止執行 name 張三 name 10 報錯 異常的捕獲 try 裡面的 如果遇見了異常,那麼不會執行try裡面的語句 try num1 input 輸入乙個數字 num2 input 輸入乙個數字 resul...

python 物件導向 11 異常

程式開發時,很難將所有的特殊情況都處理的面面俱到,通過異常捕獲可以針對突發事件做集中的處理,從而保證程式的穩定性和健壯性 try 嘗試執行的 except 出現錯誤的處理 簡單異常捕獲演練 要求使用者輸入整數try 提示使用者輸入乙個數字 num int input 請輸入數字 except pri...

python 11 反射與異常

反射與異常加上類似於反射的檔案的操作都將在下面以 的形式體現。一,反射 coding utf 8 usr bin env python3 author book miki 主要學習 getattr setattr hasattr delattr defbulk self print s wangwa...