c++語言本身或標準程式庫所丟擲的所有異常,都派生自基類exception。這是其他數個標準異常類別的基類,它們共同構成乙個類體系:
圖一 標準異常階層體系
這些標準異常類別分為三組:
(1)語言本身所支援的異常
此類異常用以支撐某些語言特性。主要包括:
bad_alloc:new操作失敗會丟擲。
bad_cast:執行期間加在乙個引用上面的動態性型別轉換操作失敗時丟擲。
bad_typeid:執行rtti時,交給typeid的引數為零或空指標時丟擲
bad_exception:非預期的異常
(2)c++標準程式庫發出的異常
總是派生自logic_error。邏輯錯誤是由於程式內部邏輯而導致的錯誤。邏輯錯誤是可以避免的,且在程式開始執行之前,能夠被檢測到。
c++標準庫中定義的邏輯錯誤如下:
class logic_error : public exception ;
class invalid_argument : public logic_error ;
class out_of_range : public logic_error ;
class length_error : public logic_error ;
class domain_error : public logic_error ;
錯誤分類解釋及舉例:
domain_error:專業領域內的範疇
invalid_argument:無效引數,比如講bitset以char而非0或1進行初始化
length_error:可能超越了最大極限,比如對著某個字串附加太多字元。
out_of_range:引數不再預期範圍內。例如在諸如array的容器或字串string中採用乙個錯誤索引。
(3)程式作用域之外發出的異常
總是派生自runtime_error,用來指出「不在程式範圍內,且不容易迴避」的事件。此類錯誤只在程式執行時才是可檢測的。c++標準庫中的定義如下:
class runtime_error : public exception ;
class range_error : public runtime_error ;
class overflow_error : public runtime_error ;
class underflow_error : public runtime_error ;
range_error:內部計算時發生區間錯誤
overflow_error:算數運算時發生上溢
underflow_error:算數運算時發生下溢
例項**:
#include #include #include #include #include #include using namespace std;
//自定義配置器,vector分配空間使用
templateclass stingyallocator : public allocator<_ty>
; size_t max_size( ) const
;};int main()
catch ( exception &e ) ;
//邏輯錯誤:length_error
trycatch ( exception &e )
;//邏輯錯誤:invalid_argument
trycatch ( exception &e )
;//邏輯錯誤:domain_error
trycatch (exception &e)
;//執行時錯誤:range_error
trycatch (exception &e)
;//執行時錯誤:underflow_error
trycatch ( exception &e ) ;
//執行時錯誤:overflow_error
trycatch(exception &e)
return 0;
}
執行結果(codeblocks):
Unity學習(C ) 錯誤處理(異常處理)
try catch catch finally static void main string args int num1 23 console.writeline array 5 catch nullreferenceexception e 依然報錯,因為捕捉的異常型別不對 catch index...
php 高階(錯誤處理和異常處理)
1.回顧 上篇學習了php中關於cookie和session的操作 2.這篇學習php高階中的錯誤處理和exception異常處理 3.錯誤處理 3.1 了解 預設錯誤處理很簡單,將訊息傳送到瀏覽器,告知檔名,行號,以及描述錯誤的訊息 錯誤處理是很重要的,如果 缺少錯誤檢測編碼,那麼看著很不專業,帶...
Oracle PL SQL 異常錯誤處理
異常情況處理 exception 是用來處理正常執行過程中未預料的事件,程式塊的異常處理預定義的錯誤 和 自定義錯誤,由於 pl sql 程式塊一旦產 生異常而沒有指出如何處理時,程式就會自動終止整個程式執行.異常錯誤可以分為三種型別 1 預定義異常 2 非預定義異常 3 使用者自定義異常 這裡進行...