JAVA-06-異常處理
阿新 • • 發佈:2021-01-21
異常處理
程式中不正常的情況、意外稱為異常。
JAVA中異常被當作物件來處理,所有異常的基類為Java.lang.Throwable。
異常分類
- 錯誤Error
- 異常Exception
Error
由虛擬機器丟擲,並終止程式。
Exception
RuntimeException
- ArrayIndexOutOfBoundsException(陣列下標越界)
- NullPointerException(空指標異常)
- ArithmeticException(算術異常)
- MissingResourceException(資源丟失)
- ClassNotFoundException(無法找到類)
丟擲、捕獲異常
-
try //監控異常
-
catch //捕獲特定的異常並處理
-
finally //最終必須執行塊
package com.jzj.six; public class useException { public static void main(String[] args) { int a = 1; int b = 0; try{ System.out.println("try監控區域"); System.out.println(a/b); }catch (ArithmeticException e){ //當捕獲到異常,終止監控區域並執行該塊。 System.out.println("catch塊"); }finally { //當catch或者try執行完畢,最終執行該塊 System.out.println("finally塊"); } } }
捕獲動作catch,從上往下,優先順序遞減,異常範圍遞增。
自定義異常
- throws //宣告可能發生的異常。
- throw //觸發某些條件使用該關鍵字丟擲對應異常物件。
繼承Exception類
package com.jzj.six; public class Test { //呼叫此方法可能會丟擲對應的異常 public static void testException(String name) throws MyException { //當引數為jzj,丟擲該異常 if("jzj".equals(name)){ throw new MyException(name); } System.out.println("end"); } //通過throws宣告的異常,無需使用try-catch捕獲也可通過編譯 public static void main(String[] args) throws MyException{ testException("jzj"); } }
package com.jzj.six;
//自定義異常類
public class MyException extends Exception{
private String name;
public MyException(String name) {
this.name = name;
}
//異常列印資訊
@Override
public String toString() {
return "MyException:不允許name為" + name;
}
}