C 錯誤處理和異常處理

2021-06-11 08:13:48 字數 2329 閱讀 8799

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 使用者自定義異常 這裡進行...