程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java中的異常,Java異常

Java中的異常,Java異常

編輯:JAVA綜合教程

Java中的異常,Java異常


一.什麼是異常

   異常就是在程序的運行過程中所發生的不正常的事件,如所需文件找不到,網絡連接不通或中斷,算術運算出錯(如被0除),數組下標越界,裝載了一個不存在的類,對null的操作,類型轉換異常等等。那麼異常會中斷正在運行的程序。

 二.異常處理

   異常處理機制就像我們對平時可能會遇到的意外情況,預先想好了一些處理辦法。也就是說,在程序執行代碼的時候,萬一發生了什麼異常,程序會按照預定的處理辦法對異常進行處理,異常處理完畢後,程序繼續運行。

三.異常的分類

01.Throwable 類是 Java 語言中所有錯誤或異常的超類。它有兩個子類:Error和Exception。

02.Error:

表示僅靠程序本身無法恢復的嚴重錯誤,如內存溢出動態鏈接失敗,虛擬機錯誤。應用程序不應該拋出這種類型的對象(一般是由虛擬機拋出)。假如出現這種錯誤,除了正確使程序退出外,在其他反面是無能為力的。比如說VirtualMachineError:當 Java 虛擬機崩潰或用盡了它繼續操作所需的資源時,拋出該錯誤。

03.Exception:

有java應用程序拋出和處理的非嚴重錯誤,如所需文件找不到,網絡連接不通或中斷,算術運算出錯(如被0除),數組下標越界,裝載了一個不存在的類,對null的操作,類型轉換異常等等.

04.運行時異常:

包括RuntimeExcption及所有子類,不要求程序非要對他做出處理。

05.checked異常(非運行時異常):

 除了運行時異常外的其他由Exception繼承來的異常類。程序必須捕獲或者聲明拋出這種異常,否則會出現編譯錯誤,無法通過編譯,處理方式有兩種:通過try-catch在當前位置捕獲並處理異常;通過throws聲明拋出異常,交給上一級調用方法處理。

四.異常的使用

 常見異常:

01.ArrayIndexOutOfBoundsException

 int[] ints = new int[] { 1, 2, 3, 4 };
        try {
            System.out.println(ints[4]);
            System.out.println("我能執行到嗎?");// 發生異常以後,後面的代碼不能被執行
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("數組越界錯誤");
        }
        System.out.println("異常出現");

運行結果: 

  數組越界錯誤

  異常出現

02.ArithmeticException:算術錯誤

System.out.println("請輸入除數:");
    int result=input.nextInt();
    System.out.println("請輸入被除數:");//這裡輸入0
    int result2=input.nextInt();
    try {
        int num=result/result2;
        System.out.println("結果:"+num);
    } catch (ArithmeticException e) {
        System.out.println("算術錯誤!");
    }

 

如果被除數的輸入為0的話,就會產生算術錯誤

運行結果:

算術錯誤

   我們上面列舉的常見異常也非常多,我在這裡就不一一來寫了,希望大家自己研究一下。

五.多重catch塊

    一段代碼可能會引發多種異常,這時,可以在一個catch快後面多跟幾個catch快,分別處理不同的 異常,但需要注意的是排列的順序必須是從子類到父類,最後一個一般都是Exception類,那麼如果將父類異常放到前面,那麼所有的異常將被捕獲,後面的子類異常將得不到執行的機會。

 六.拋出異常和聲明異常

在編程過程中,我們往往會遇到這種情況,在當前環境中無法解決,比如用戶傳入的參數錯誤等。此時,就要從當前環境中拋出異常提交給上級來處理。

在java語言中,使用throw關鍵字來拋出異常

 

private String name="";//姓名
//設置性別
public void setSex(String sex)throws Exception {//聲明異常使用throws關鍵字
    if(sex.equals("男")||sex.equals("女"))
    {
        this.sex = sex;
    }
    else
    {
        throw new Exception("性別必須是男或女");//拋出異常使用throw關鍵字
    }

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved