複製鏈接
請複製以下鏈接發送給好友

異常

(計算機術語)

鎖定
異常指的是在程序運行過程中發生的異常事件,通常是由外部問題(如硬件錯誤、輸入錯誤)所導致的。在Java等面向對象的編程語言中異常屬於對象。
中文名
異常
外文名
Exception
含    義
外部問題等導致的程序事件
類    型
計算機術語

異常定義

異常:程序在運行過程中發生由於外部問題(如硬件錯誤、輸入錯誤)等導致的程序異常事件。
(在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向上一級調用方法拋出異常。