C 異常處理機制

2021-07-27 12:09:22 字數 1361 閱讀 3339

異常處理

增強錯誤恢復能力是提高**健壯性的最有力的途徑之一,c語言中採用的錯誤處理方法被認為是緊耦合的,函式的使用者必須在非常靠近函式呼叫的地方編 寫錯誤處理**,這樣會使得其變得笨拙和難以使用。c++中引入了異常處理機制,這是c++的主要特徵之一,是考慮問題和處理錯誤的一種更好的方式。使用 錯誤處理可以帶來一些優點,如下:

(1)錯誤處理**的編寫不再冗長乏味,並且不再和正常的**混合在一起,程式設計師只需要編寫希望產生的**,然後在後面某個單獨的區段裡編寫處理錯誤的**。多次呼叫同乙個函式,則只需要某個地方編寫一次錯誤處理**。

(2)錯誤不能被忽略,如果乙個函式必須向呼叫者傳送一次錯誤資訊。它將丟擲乙個描述這個錯誤的物件。

c++的異常處理的基本思想大致可以概括為傳統錯誤處理機制、通過函式返回值來處理錯誤。

1)c++的異常處理機制使得異常的引發和異常的處理不必在同乙個函式中,這樣底層的函式可以著重解決具體問題,而不必過多的考慮異常的處理。上層呼叫者可以再適當的位置設計對不同型別異常的處理。

2)異常是專門針對抽象程式設計中的一系列錯誤處理的,c++中不能借助函式機制,因為棧結構的本質是先進後出,依次訪問,無法進行跳躍,但錯誤處理的特徵卻是遇到錯誤資訊就想要轉到若干級之上進行重新嘗試。

異常基本語法

1) 若有異常則通過throw操作建立乙個異常物件並拋擲。

2) 將可能丟擲異常的程式段嵌在try塊之中。控制通過正常的順序執行到達try語句,然後執行try塊內的保護段。

3) 如果在保護段執行期間沒有引起異常,那麼跟在try塊後的catch子句就不執行。程式從try塊後跟隨的最後乙個catch子句後面的語句繼續執行下去。

4) catch子句按其在try塊後出現的順序被檢查。匹配的catch子句將捕獲並處理異常(或繼續拋擲異常)。

5) 如果匹配的處理器未找到,則執行函式terminate將被自動呼叫,其預設功能是呼叫abort終止程式。

6)處理不了的異常,可以在catch的最後乙個分支,使用throw語法,向上扔

7)異常機制與函式機制互不干涉,但捕捉的方式是基於型別匹配。捕捉相當於函式返回型別的匹配,而不是函式引數的匹配,所以捕捉不用考慮乙個拋擲中的多種資料型別匹配問題。

catch**塊必須出現在try後,並且在try塊後可以出現多個catch**塊,以捕捉各種不同型別的拋擲。

異常機制是基於這樣的原理:程式執行實質上是資料實體在做一些操作,因此發生異常現象的地方,一定是某個實體出了差錯,該實體所對應的資料型別便作為拋擲和捕捉的依據。

8)異常捕捉嚴格按照型別匹配

int main()

catch (int)

cout << 「that』s ok.\n」;

return 0;

}

c 異常處理機制

c 異常處理機制 c 異常處理機制是乙個用來有效地處理執行錯誤的非常強大且靈活的工具,它提供了更多的彈性 安全性和穩固性,克服了傳統方法所帶來的問題.異常的丟擲和處理主要使用了以下三個關鍵字 try throw catch 丟擲異常即檢測是否產生異常,在c 中,其採用throw語句來實現,如果檢測到...

c 異常處理機制

c 異常處理機制是乙個用來有效地處理執行錯誤的非常強大且靈活的工具,它提供了更多的彈性 安全性和穩固性,克服了傳統方法所帶來的問題.異常的丟擲和處理主要使用了以下三個關鍵字 try throw catch 丟擲異常即檢測是否產生異常,在c 中,其採用throw語句來實現,如果檢測到產生異常,則丟擲異...

C 異常處理機制

c 異常處理機制主要使用try,throw,catch三大關鍵字。try catch語句形式如下 require redcarpet markdown redcarpet.new hello world puts markdown.to htmltry catch exception1 ex 捕獲型...