1. 程式人生 > >java高階程式設計技術和API:異常處理<1>

java高階程式設計技術和API:異常處理<1>

1.關於java的異常處理首先會提到Throwable這個頂層父類,因為Exception和Error都是繼承自throwable。 Error一般是因為jvm本身的錯誤。error是說程式設計師不能通過程式碼去解決,一般很少出現。我們應該更多的去關注exception這個類。我們一般所說的IOException(檢查時異常)和RuntimeException(執行時異常)都是繼承自Exception。在詳細介紹exception其下子類之前,先po出一張圖來幫助理清楚整體結構。 在這裡插入圖片描述

					從圖中我們可以很清晰的看到java整個異常處理類的結構。

**非檢查異常(unckecked exception):**Error 和 RuntimeException 以及他們的子類。javac在編譯時,不會提示和發現這樣的異常,不要求程式處理這些異常。所以如果願意,我們可以也編寫程式碼處理(使用try…catch…finally)這樣的異常,也可以不處理。對於這些異常,我們更應該去修改程式碼 ,因為這樣的異常發生的原因多半是程式碼寫的有問題。比如像除0發生的錯誤ArithmeticException,強制型別轉換錯誤ClassCastException,陣列索引越界ArrayIndexOutOfBoundsException,空物件NullPointerException等等。

**檢查異常(checked exception):**除了Error 和 RuntimeException的其它異常。javac強制要求程式設計師為這樣的異常做預備處理工作(使用try…catch…finally或者throws)。在方法中要麼用try-catch語句捕獲它並處理,要麼用throws子句宣告丟擲它,否則編譯不會通過。這樣的異常一般是由程式的執行環境導致的。因為程式可能被執行在各種未知的環境下,而程式設計師無法干預使用者如何使用他編寫的程式,於是程式設計師就應該為這樣的異常時刻準備著。如SQLException , IOException,ClassNotFoundException 等等。

一般在實習生的面試中很容易問到這個問題,讓你舉例你瞭解的執行時異常和檢查時異常,這個時候你說的越多越好,最好再加上一些描述,比如說你在寫程式時所遇到的異常、等等。這裡我稍微整理了一下// 常見的執行時異常有:1.java.lang.NullPointerException(空指標異常)ps:java 中是具有指標的,一般初學者可能會不知道,我曾經在面試中問到這個問題。空指標異常的解釋很簡單。簡單地說就是呼叫了未經初始化的物件或者是不存在的物件,經常出現在呼叫陣列和建立圖片的操作中。 2.java.lang.ArrayIndexOutOfBoundsException (陣列下標越界異常)。簡單解釋就是呼叫陣列的值時超出了陣列的下標。當程式中呼叫陣列的操作是通過某種特定的方法決定時,就得小心了,這時候一定要檢查一下被呼叫的陣列的length是否被超出。 3.java.lang.IndexOutOfBoundsException(索引越界異常)。當訪問某個序列的序列值小於0或者大於等於序列大小時,就會丟擲索引越界異常。 4.ClassCastException(型別強制轉換異常)。 5.IllegalArgumentException (傳遞非法引數異常)。

常見的檢查時異常有:1.IOException(IO流異常)。一般在讀寫檔案時可能會發生該異常,比如當你去讀取硬碟上的一個檔案,但是該檔案卻不存在時。 2.SQLException(資料庫異常)。 3.FileNotFoundException(找不到檔案異常)。