java 異常

啊剛發表於2018-05-15

在Java語言中,我們用異常物件來表示不同的異常。

所謂Java異常物件就是一個存放著相關錯誤資訊的物件,如果方法執行時產生了異常,該方法就可以丟擲一個異常物件

為了表示不同種類的異常,Java語言中定義了許多異常類。

什麼是異常 有異於常態,和正常情況不一樣,有錯誤出現,阻止當前方法或作用域,稱之為異常。

非檢察異常:

1.空指標異常(NullPointerException)

2.陣列下標越界異常ArrayIndexOutOfBoundsException

3.型別轉換異常(ClassCastException)

4.算術異常(ArithmeticExcetion)

java   異常

在Java語言中,任何的異常物件都是Throwable類的直接子類或間接子類的例項。Java的類庫已經提供了一些常見的異常類,如果這些異常類不能夠滿足要求,使用者也可以建立自己的異常類。


**常見的而異常類**
複製程式碼
  • ArithmeticException
  • ArrayIndexOutOfBandsException
  • IOException
  • FileNotFoundException
  • NullPointerException
  • NumberFormatException

Error類表示Java執行時產生的系統內部錯誤或資源耗盡等嚴重錯誤。 這種錯誤通常是程式無法控制和解決的,如果發生這種錯誤,通常的做法是通知使用者並中止程式的執行。

常見的錯誤類

  • NoClassDefFoundError
  • OutOfMemoryError
  • VirtualMachineError

異常丟擲格式1

<訪問許可權修飾符> <返回值型別> <方法名>(引數列表) throws 異常列表

   public             void                  troubleSome()               throws IOException
複製程式碼

異常丟擲格式2

try{

		丟擲異常的程式碼
}catch (某Exception型別 e){
		處理該異常型別的程式碼
}catch (某Exception型別 e){
		處理該異常型別的程式碼
}finally{錯誤也執行的程式碼
複製程式碼

}

異常處理練習一

程式碼1:

try{

        System.out.println("請輸入整數");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        System.out.println("十年後你"+(age + 10) + "歲");

    }catch (Exception e){
        System.out.println("你應該輸入整數");
    }
    System.out.println("程式結束啦");
    
    


多型別處理:
複製程式碼

try{

        System.out.println("請輸入整數");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        System.out.println("十年後你"+(age + 10) + "歲");

    }catch (InputMismatchException e){
        System.out.println("你應該輸入整數");
    }catch (ArithmeticException e){
        System.out.println("除數不能為0");
    }
    System.out.println("程式結束啦");
複製程式碼

java   異常

異常來順序是 先子類後父類(必須這樣子)

finally

當一個方法的某條語句丟擲異常後,該方法剩餘的語句將無法繼續執行。這種情況下,方法往往無法將其佔用的資源進行釋放。 解決方法: 在每個catch子句的異常處理程式碼中也加上資源釋放的程式碼,但這種方法非常麻煩; Java語言的異常處理機制中提供了一個更好的方案-程式設計師可以使用finally子句來統一進行資源釋放之類的工作。

程式碼如下; try{

        System.out.println("請輸入整數");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        System.out.println("十年後你"+(age + 10) + "歲");
    }catch (InputMismatchException e){
        System.out.println("你應該輸入整數");
    }
    **finally** {
        System.out.println("*********** 我就要執行 *********");
    }
    System.out.println("程式結束啦");
複製程式碼