1. 程式人生 > 實用技巧 >JAVA-06-異常處理

JAVA-06-異常處理

異常處理

程式中不正常的情況、意外稱為異常。

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;
    }
}