c++語言本身或者標準程式庫跑出的所有異常,都派生自基類exception.這是其他數個標準異常的基類,他們共同構成乙個類體系。
這些標準異常類別分為三組:
(1)語言本身所支援的異常
此類異常用以支撐某些語言特性。主要包括:
bad_alloc:new操作失敗會丟擲。
bad_cast:執行期間加在乙個引用上面的動態性型別轉換操作失敗時丟擲。
bad_typeid:執行rtti時,交給typeid的引數為零或空指標時丟擲
bad_exception:非預期的異常
(2)c++標準程式庫發出的異常
總是派生自logic_error。邏輯錯誤是由於程式內部邏輯而導致的錯誤。邏輯錯誤是可以避免的,且在程式開始執行之前,能夠被檢測到。
domain_error:專業領域內的範疇 invalid_argument:無效引數,比如講bitset以char而非0或1進行初始化 length_error:可能超越了最大極限,比如對著某個字串附加太多字元。 out_of_range:引數不再預期範圍內。例如在諸如array的容器或字串string中採用乙個錯誤索引。
(3)程式作用域之外發出的異常
總是派生自runtime_error,用來指出「不在程式範圍內,且不容易迴避」的事件。此類錯誤只在程式執行時才是可檢測的。
舉個例子:
#include #include #include #include #include #include using namespace std;
int main()
catch(exception &e)
;class exception1:public errorbase
};class exception2:public errorbase
};void test()
int main()
catch(const errorbase& e)
{cout
C 異常處理
結構化異常 structured exception vs c 異常 c exception 大家都知道c 異常是c 語言的乙個特性,使用者可以使用throw的方式來丟擲異常,try catch 來捕獲異常。結構化異常是諸如,zero divided,access violations等異常,這些異...
c 異常處理
一 概述 c 自身有著非常強的糾錯能力,發展到如今,已經建立了比較完善的異常處理機制。c 的異常情況無非兩種,一種是語法錯誤,即程式中出現了錯誤的語句,函式,結構和類,致使編譯程式無法進行。另一種是執行時發生的錯誤,一般與演算法有關。關於語法錯誤,不必多說,寫 時心細一點就可以解決。c 編譯器的報錯...
C 異常處理
程式設計師常常忽視異常處理的重要性,這給他們自己的 造成相當大損害。本文將討論如何在c 中使用異常處理,並介紹在應用 中新增 片段以防止某些錯誤的一些簡單方法,這些錯誤可能導致程式異常終止。結構化異常處理 net框架提供一種標準的錯誤報告機制稱為結構化異常處理。這種機制依賴於應用中報告錯誤的異常。在...