異常[計算機術語]

異常指的是在程式運行過程中發生的異常事件,通常是由外部問題(如硬體錯誤、輸入錯誤)所導致的。在Java等面向對象的程式語言中異常屬於對象。

定義

異常:程式在運行過程中發生由於外部問題(如硬體錯誤、輸入錯誤)等導致的程式異常事件。

(在Java等面向對象的程式語言中)異常本身是一個對象,產生異常就是產生了一個異常對象。

異常與錯誤的區別

異常(Exception)都是運行時的。編譯時產生的不是異常,而是錯誤(Error)。

最開始大家都將程式設計導致的錯誤(Error)認定文不屬於異常(Exception)。

但是現在一般都將Error作為異常的一種,所以異常一般分兩類,Error與Except。

Exception 機制

早期的C語言的異常處理機制,通常是我們人為的對返回結果加一些標誌來進行判定,比如發生錯誤返回什麼標誌,正常情況下我們又是返回什麼標記,而這些都不是語言本身所賦予我們的,這種機制的問題在於,C語言的異常處理機制全是我們人為的定義,這樣就會造成業務邏輯的主線受到異常處理的牽制,或者說是我們難免會將注意力轉移,並且造成業務邏輯與異常處理之間有很大程度上的纏繞。

模型

理論上異常處理劃分為兩個模型(中止模型與繼續模型),但實際使用方面我們對中止模型用的比較多,這個模型比較實用,而繼續模型則不是那么的套用普遍,多少是耦合的過於緊密。

中止模型 :

假設錯誤非常嚴重,已至你無法在回到錯誤發生的地方,也就是說,這段程式經過判斷認為,他已經沒有辦法挽回,於是就拋出異常,希望這個異常不要在回來,這也是Java 當前所採用的模式。

繼續模型:

這種模型的主旨是恢復當前的運行環境,然後希望能夠重新回到錯誤的發生地,並希望第二次的嘗試能夠獲得成功,這種模型通常為作業系統所套用。

異常的常見例子:有記憶體分配不足、數組下標越界、運算溢出或除數為零。

使用異常的原因(參考csdn):取代返回值表示錯誤狀態、使程式可以繼續運行、發生異常時記錄錯誤信息……

C++異常處理

析構類對象、已調用的函式退棧……

Java中的異常

分類:

Java異常 Java異常

異常都是從類Throwable類派生出來的,而Throwable類是直接從Object類繼承而來,可見Java對異常處理的重視程度。

Error:系統內部錯誤,這類錯誤由系統進行處理,程式本身無需捕獲處理;

Exception(可以處理的異常)

RuntimeException:可以捕獲,也可以不捕獲的異常。

繼承Exception的其他類:必須被捕獲的Exception,查閱API幫助中方法後面會有說明此方法拋出哪些異常,這些異常必須被捕獲。

捕獲:

通過try…catch語句進行捕獲異常。

通過throw拋出異常,throws向上一級調用方法拋出異常。

相關詞條

熱門詞條

聯絡我們