c try語句塊和異常處理

2022-06-21 14:54:14 字數 1866 閱讀 5115

異常是指存在於執行時的反常行為,這些行為超出了函式正常功能的範圍。典型的異常包括失去資料庫連線以及遇到意外輸入等。處理反常行為可能是設計所有系統最難的一部分。

如果程式中含有可能引發異常的**,那麼通常也會有專門的**處理問題。例如,如果程式的問題是輸入無效,則異常處理部分可能會要求使用者重新輸入正確的資料;如果丟失了資料庫連線,會發出報警資訊。

異常處理機制為程式中異常檢測和異常處理這兩部分的協作提供支援。在c++語言中,異常處理包括:

●throw表示式。異常檢測。

●try語句塊。異常處理。

●一套異常類,用於在throw表示式和相關的catch子句之間傳遞異常的具體資訊。

throw表示式

程式的異常檢測部分使用throw表示式引發乙個異常。throw表示式包含關鍵字throw和緊隨其後的乙個表示式,其中表示式的型別就是丟擲的異常型別。throw表示式後面緊跟乙個分號,從而構成一條表示式語句。

throw runtime_error("data must refer to ...");

丟擲的異常是型別runtime_error的物件。丟擲異常將終止當前的函式,並把控制權轉移給能處理該異常的**。

try語句塊

trycatch(exception-declaration)catch(exception-declaration){

handler-statements

一如往常,try語句塊內宣告的變數在塊外部無法訪問,特別是在catch子句內也無法訪問。

函式在尋找處理**的過程中退出

乙個try語句塊可能呼叫了包含另乙個try語句塊的函式,新的try語句塊可能呼叫了包含又乙個try語句塊的新函式,以此類推。

如果最終還是沒能找到任何匹配的catch子句,程式轉到名為terminate的標準庫函式。該函式的行為與系統有關,一般情況下,執行該函式將導致程式非正常退出。

如果一段程式沒有try語句塊且發生了異常,系統會呼叫terminate函式並終止當前程式的執行。

note:編寫異常安全的**非常困難

異常中斷了程式的正常流程。

對於一些程式來說,當異常發生時只是簡單地終止程式。

但是對於那些要處理異常並繼續執行的程式,就要加倍注意了。我們必須時刻清楚異常何時發生,異常發生後程式應如何確保物件有效、資源無洩漏、程式處於合理狀態,等等。

標準異常

c++標準庫定義了一組類,用於報告標準庫函式遇到的問題。這些異常類也可以在使用者編寫的程式中使用,它們分別定義在4個頭檔案中:

exception

stdexcept

newtype_info

標準庫異常類只定義了幾種運算,包括建立或拷貝異常型別的物件,以及為異常型別的物件賦值。

應該使用string物件或者c風格字串初始化這些型別的物件,但是不允許使用預設初始化的方式。當建立此類物件時,必須提供初始值,該初始值含有錯誤相關的資訊。除了exception、bad_alloc和bad_cast物件,不允許為這些物件提供初始值。

定義的異常類

exception最常見的問題

runtime_error只有在執行時才能檢測出的問題

range_error執行時的錯誤:生成的結果超出了有意義的值域範圍

overflow_error執行時錯誤:計算上溢

underflow_error執行時錯誤:計算下溢

logic_error程式邏輯錯誤

domain_error邏輯錯誤:引數對應的結果值不存在

invalid_argument邏輯錯誤:無效引數

length_error邏輯錯誤:試圖建立乙個超出該型別最大長度的物件

out_of_range邏輯錯誤:使用乙個超出有效範圍的值

try語句塊和異常處理

今晚看了一下c primer 的異常處理的簡單介紹,在這裡簡略記一下 異常處理機制包括異常檢測和異常處理 在c 中異常處理主要包括 throw表示式 用 throw 表示式來丟擲 引發 異常 那自然有接收 try語句塊 包含catch子句 用try語句塊來表示這段 可能會丟擲異常,丟擲的異常通常會被...

try語句塊和異常處理

在c 中,異常處理包括 throw表示式 throw expression 異常檢測部分使用throw表示式來表示它遇到了無法處理的問題。throw表示式丟擲乙個異常並把控制權轉移到能處理該異常的最近的catch子句。try語句塊 try block 異常處理部分使用try語句塊處理異常。try關鍵...

(30)try語句塊和異常處理

異常是指存在於執行時的反常行為,這些行為超出了函式正常功能的範圍。當程式的某部分檢測到乙個它無法處理的問題時,需要用到異常處理。異常處理機制為程式中異常檢測和異常處理這兩部分的協作提供支援。在c 語言中,異常處理包括 一.throw表示式,異常檢測部分使用throw表示式來表示它遇到了無法處理的問題...