異常處理機制

異常處理機制

異常處理(Exception Handling)就是一種解決這一問題的機制,能夠較好地處理程式不能正常運行的情況。

概述

程式設計的要求之一就是程式的健壯性。希望程式在運行時能夠不出或者少出問題。但是,在程式的實際運行時,總會有一些因素導致程式不能正常運行。

在設計算法時,往往對算法的正常邏輯處理流程設計得比較準確,對異常情況的處理反而不容易設計全面,導致程式在出現異常情況時崩潰。如果軟體出現這種情況會給用戶帶來極不友好的體驗。

舉一個簡單的例子,試設計一個程式,運行後提示用戶輸入兩個整數。兩個整數用空格隔開,用戶輸入後,程式顯示出兩個數字的和。這個程式正常的邏輯處理非常簡單,但普用戶輸入的兩個字元串不是整數,程式應該給出提示,否則程式有可能會崩潰。因此針對異常情況的處理也是非常重要的,當然有時這種處理會比較複雜。

常見異常

異常(Exception)是程式在運行時可能出現的會導致程式運行終止的錯誤。這種錯誤是不能通過編譯系統檢查出來的。常見的異常如下:

(1)系統資源不足。例如,記憶體不足,不可以動態申請記憶體空間;磁碟空間不足,不能打開新的輸出檔案等。

(2)用戶操作錯誤導致運算關係不正確。例如,出現分母為0。數學運算溢出,數組越界,參數類型不能轉換等。

異常特點

異常有以下的一些特點:

(1)偶然性。程式運行中,異常並不總是會發生。

(2)可預見性。異常的存在和出現是可以預見的。

(3)嚴重性。一旦異常發生,程式可能終止,或者運行的結果不可預知。

異常例子

異常處理機制 異常處理機制

在C++中,使用try、throw、catch三個關鍵字來實現異常處理。

try後面的複合語句稱為受保護段,受保護段的代碼有可能出現異常,因此在try部分進行異常檢測。如果檢測到異常,就通過throw語句拋擲這個異常。受保護段所調用的函式中也可以檢測和拋擲異常。所拋擲的異常,可以是一個整數、一個字元串、一個變數,甚至是一個類的對象。也就是說,異常是有不同類型的。

catch部分的作用是捕獲異常和處理異常。每個catch後的括弧內,都要指定一個“異常類型”,表明它可以捕獲哪種類型的異常。一旦捕獲到異常,就通過異常處理語句來進行處理。

程式執行的流程有兩種:

異常處理機制 異常處理機制
異常處理機制 異常處理機制

(1)沒有異常:try 受保護語句 其他語句。

異常處理機制 異常處理機制
異常處理機制 異常處理機制
異常處理機制 異常處理機制
異常處理機制 異常處理機制

(2)有異常:try 受保護語句 throw異常 catch 異常處理語句。

在編寫帶有異常處理的程式時,還要注意:

(1)try語句塊和catch語句塊是一個整體,兩者之間不能有其他的語句。

(2)一個try語句塊後面可以有多個catch語句,但是。不可以幾個try語句塊後面用一個catch語句。

相關詞條

熱門詞條

聯絡我們