首頁 >Java >java教程 >分析Java異常Exception實例的方法及步驟

分析Java異常Exception實例的方法及步驟

WBOY
WBOY轉載
2023-04-20 15:31:261470瀏覽

1、異常中最大的父類別Throwable

分析Java異常Exception實例的方法及步驟

Throwable可以分成兩種:

Error

Exception: 

  • 執行階段異常(非受檢異常)

  • #非執行階段異常(受檢異常)

#Error錯誤:Error是程式無法處理的錯誤,它是由jvm產生拋出的,例如OutOfMemoryError,ThreadDeath等,這些例外發生時,jvm會選擇終止程式執行

Exception:是程​​式本身可以處理的異常

  • 運行時異常:都是RuntimeException類及子類,如NullPointerException(空指針),IndexOutOfBoundException(數組越界)等,這些異常可以選擇捕獲處理,或者可以不處理

  • 非運行時異常:(受檢異常)時除了RuntimeException以外的異常,類型上屬於Exception類,從程序語法角度這些異常必須要進行處理,如果不處理,程式不餓能通過編譯,如IOException,SQIException

#2、try-catch-finally三條語句注意的問題

  • #try,catch,finally皆不能單獨使用,三者可以組合使用,組合方式:try…catch, try…catch…finally, try…finally ,其中catch可以有一個或多個,finally語句最多只能有一個

  • 三個語句區塊中變數的作用域為程式碼區塊,分別獨立的不能互相訪問,如果要在三塊中都可以訪問,就把變數定義到這些區塊外邊

  • 如果存在多個catch區塊,最多只會符合一個異常類別且執行該catch區塊程式碼,而不會在執行其他catch區塊,且符合順序是從上到下,最多只會匹配一個異常類,也就是說也可以一個異常類都不執行

  • catch捕獲的異常類不能重複,並且先捕獲子類異常再捕獲父類異常

  • 無論try中語句有沒有問題,finally中的語句一定執行,finally為程式提供統一的出口,保證程式狀態的統一管理,通常情況下finally中進行資源的關閉清除工作

package com.exception;
public class Test {
    public static void main(String[] args) {
        int[] a=new int[5];
        try {
            for (int i = 0; i <10 ; i++) {
                a[i]=i;
            }
            //空指针
        }catch (ArrayIndexOutOfBoundsException e){
            //弹出出错的地方
            System.out.println("1");
            e.printStackTrace();
            //访问异常,数组越界
        }catch (NullPointerException e){
            System.out.println("2");
            e.printStackTrace();
            //无论有错与否,finally最终执行
        } finally {
            System.out.println("都能执行");
        }
        System.out.println("---------------");
    }
}

3、final-finally-finalize的各作用

  • final:用於定義常數的關鍵字

  • finally:異常中總是可以執行的程式碼區塊

  • #finalize() :垃圾回收,該方法是系統調用,不用程式設計師手動調用

4、throws關鍵字

  • 定義一個方法的時候可以使用throws關鍵字聲明,表示該方法時不處理該異常,而是交給方法呼叫者處理該異常

  • 在定義方法時,throws關鍵字可以程式設計師自主選擇使用,如果使用了,那麼說明該方法時不處理該異常的

  • 如果主方(main)也使用throws關鍵字,那麼就表示主方法也不處理異常,最後留給jvm處理,jvm處理異常就是終止程式

  • throws拋出一個子類別異常,呼叫該方法的呼叫者可以不必須處理該異常

注意:

throw關鍵字:是可以自訂異常,也就是拋異常,拋出的時候是一個異常類別的物件

#5、throws和throw的區別

throws:

  • 用在方法宣告之後,跟著例外的是例外類別名稱

  • #可以跟多個例外類,用逗號隔開

  • #表示拋出異常,有該方法的呼叫者處理

  • throws表示出現異常的一種可能性,不一定會發生異常

#throw:

  • 用在方法體內,跟著出現的是例外物件

  • 只能拋出一個例外對象

  • 表示拋出異常,有方法體內語句處理

  • #throw拋異常是一定會發生,並不是一種可能

程式碼表示:

package com.test;
public class Throw {
    //throws Exception 代表该方法出现异常时不做处理
    public void deposit(int num1,int num2) throws Exception
    {
        // RuntimeException()是运行时异常最大的父类
        int sum;
        if(num2==0){
            throw new RuntimeException("可以自定义一个异常抛出:除数不能为0");
        }else{
           sum=num1/num2;
        }
    }
}

以上是分析Java異常Exception實例的方法及步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除