1. 程式人生 > >Java異常處理:

Java異常處理:

異常處理:

一:異常:

程式在執行過程中出現的不正常的現象

二:分類:

異常和錯誤的區別:宜昌市程式設計師能夠處理的情況,而錯誤一般是硬體,執行環境設計等原因導致的,程式設計師不能去處理的情況

執行時異常和編譯時異常的區別:一般來說,執行時異常為語義錯誤,而編譯時異常為語法錯誤,連編譯都無法通過;

三:異常處理 ——抓住異常

1.三個主要的關鍵字:

try(程式塊中可能有異常) -> catch(如果有異常,那麼進入到catch中處理) -> finally

try:包含可能產生異常的塊,必須書寫;

catch:異常處理塊(可有多個,也可以一個catch匹配多種異常型別;注意語法);先與tay中產生的異常進行匹配,若匹配成功,則進入執行;

finally:finally塊不管異常是否發生,只要對應的try執行了,則它一定也執行(即使在catch中有return 也會執行)。(值得注意:當catch中有return語句,finally語句中也有return語句,則catch中的return會被覆蓋,故finally語句中不應該有return語句,)只有一種方法讓finally塊不執行:System.exit()(//關閉虛擬機器);因此finally塊通常用來做資源釋放操作:關閉檔案,關閉資料庫連線等等。

注意區別:

final:方法修飾符

finall:異常處理的關鍵字

finalize:它是Objec的一個方法(垃圾回收時呼叫)

2.處理步驟:

情況一:有了try-catch處理,程式在執行過程中,出現了異常,並在處理時產生的異常和catch的異常匹配,進入catch處理,異常處理結束;

情況二:有了try-catch處理,程式在執行過程中,沒有出現了異常,不進入catch處理,異常處理結束;

情況三:有了try-catch處理,程式在執行過程中,出現了異常,但和catch匹配失敗,程式終止執行;

情況四:有了try-catch處理,並有多個catch處理塊,程式在執行過程中,出現了異常,和catch自頂向下依次匹配,若匹配成功,則執行,異常處理成功,若全部匹配失敗,程式終止執行;

情況五:finall塊不管發生什麼情況都會執行

注意事項:

異常處理程式碼的書寫順序:Try->catch->finally

Try為可能產生異常的塊,必須書寫

catch為處理異常的塊,必須書寫,可以有1~N個

finally可寫可不寫

如果有多個catch塊,必須按先子類後父類的順序書寫,否則報錯;

常見異常:

java.long.ArithmeticException 數異常

java.long.ArrayIndexOutOfBoundsException 陣列越界

java.long.IllegalArgumtException 方法的引數錯誤

ClassCastException 型別強制轉換錯誤

java.long.NumberFormatException

FileNotFoundException 檔案未找到異常

SQlException 操作資料庫異常

IOException 輸入輸出異常

四:異常處理——丟擲異常

通過throw語句手動顯式的丟擲一個異常

步驟:在方法宣告時,用 throws 異常型別 先宣告可能要丟擲異常;

可用try產生異常,用catch處理時用 throw 異常物件 丟擲異常;

在主調函式中用try接收,catch處理,可再次丟擲,或常規處理;

五:自定義異常

如果要自定義異常類,則擴充套件Exception類即可,因此這樣的自定義異常都屬於檢查異常(checked exception)。如果要自定義非檢查異常,則擴充套件自RuntimeException。

方法:

e.printStackTrace(); //打出錯誤的堆疊資訊