註意:異常處理不屬於原始c++規範。它是在65438和0983之間開發的。異常處理是由
大多數現有的c++編譯器都支持所提出的ANSI c++標準定義。
c++異常處理基於三個關鍵字:try、catch和throw。
通常,監視異常情況的程序語句包含在try中。如果try塊中出現異常(即錯誤),將由throw處理。異常由catch捕獲並處理。
這些論點將在下面詳細討論。
拋出異常的語句必須在try塊中執行(在try塊中調用的函數也可能拋出異常)。任何異常都必須由拋出異常的try語句之後的catch語句立即捕獲。
試捕法的壹般形式如下:
嘗試{
// try塊
}
catch(type1 arg){
//catch塊
}
catch (type2 arg){
// catch塊
}
catch(type3 arg){
// catch塊
}
catch(類型參數){
// catch塊
}
try塊必須包含用戶程序中監控錯誤的部分。它們可以像函數中的幾條語句壹樣短,也可以像try塊中main()函數的代碼壹樣被完全包裝(有效地監控整個程序)。
當異常發生時,相應的catch語句捕獲並處理該異常。可能有多個與try相關的catch語句。至於用哪個catch語句,是由異常的類型決定的。也就是說,如果catch語句描述的數據類型與異常情況匹配,則執行該catch語句(被其他catch語句跳過)。當捕獲到異常時,arg將接受它的值。您可以捕獲任何類型的數據,包括用戶創建的類。如果try塊中沒有出現異常(錯誤),則不會執行catch語句。
throw語句的壹般形式如下:
拋出異常;
Throw必須在try塊中或在try塊中直接或間接調用的任何函數中執行。異常是壹個拋出的值。
如果對於拋出的異常沒有合適的catch語句,程序將異常終止。如果用戶的編譯器符合推薦的ANSI c++標準,拋出未處理的異常將導致調用terminate()函數。默認情況下,terminate()調用abort()來終止用戶程序,但是用戶可以根據需要定義自己的終止處理程序。