Java 異常類型匯總

一、異常概述

異常是 Java 中的一個重要概念,它指的是程序在執行過程中出現的不正常狀況。Java 中的異常機制可以保證程序的健壯性,使得程序能夠更加穩定、可靠地運行。

Java 的異常可以分為兩類:受檢異常(checked exception)和非受檢異常(unchecked exception)。

  • 受檢異常:就是必須顯式捕獲的異常,如果不處理會導致編譯錯誤。例如:IOException、SQLException 等。
  • 非受檢異常:就是運行時異常,一般是程序員的錯誤導致。如果不處理,程序會在運行時崩潰。例如:NullPointerException、ArrayIndexOutOfBoundsException 等。

二、異常類型

1. NullPointerException

當一個對象為空,而你試圖訪問它的屬性、方法或子對象時,就會拋出 NullPointerException 異常。

public class NullPointerDemo {
    public static void main(String[] args) {
        String str = null;
        str.toString();
    }
}

上面的代碼中,str 為 null,調用它的 toString 方法會拋出 NullPointerException。

2. IndexOutOfBoundsException

當你訪問數組、字元串等容器類型時,如果訪問了一個不存在的元素、位置越界,就會拋出 IndexOutOfBoundsException 異常。

public class IndexOutOfBoundsDemo {
    public static void main(String[] args) {
        int[] arr = new int[3];
        arr[3] = 1;
    }
}

上面的代碼中,數組 arr 的長度為 3,訪問索引 3,越界了,會拋出 IndexOutOfBoundsException。

3. IllegalArgumentException

當你給一個方法傳遞了一個不合法的參數時,就會拋出 IllegalArgumentException 異常。

public class IllegalArgumentDemo {
    public static void main(String[] args) {
        int age = -5;
        if (age  150) {
            throw new IllegalArgumentException("年齡必須在0到150之間");
        }
    }
}

上面的代碼中,如果 age 小於 0 或大於 150,就會拋出 IllegalArgumentException。

4. ArithmeticException

當進行除法運算時,如果除數為 0,就會拋出 ArithmeticException 異常。

public class ArithmeticDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        int c = a / b;
    }
}

上面的代碼中,除數 b 為 0,運行時會拋出 ArithmeticException 異常。

三、異常處理

1. try-catch-finally

Java 中使用 try-catch-finally 塊來處理異常。

public class TryCatchDemo {
    public static void main(String[] args) {
        try {
            int a = 10;
            int b = 0;
            int c = a / b;
        } catch (ArithmeticException e) {
            System.out.println("除數不能為 0");
        } finally {
            System.out.println("這裡一定會執行");
        }
    }
}

在上面的代碼中,try 塊中的代碼可能會引發 ArithmeticException 異常,如果發生異常,就會跳轉到 catch 塊處理。finally 塊中的代碼一定會執行,無論是否有異常發生。

2. throws

如果一個方法中有可能拋出異常,可以使用 throws 關鍵字聲明異常的類型。

public class ThrowsDemo {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
        System.out.println(line);
    }
}

在上面的代碼中,readLine() 方法聲明了一個 IOException 異常,調用該方法時,必須在方法前使用 throws 關鍵字處理異常。

3. throw

程序員也可以手動拋出異常,使用 throw 關鍵字。

public class ThrowDemo {
    public static void main(String[] args) throws Exception {
        throw new Exception("異常信息");
    }
}

在上面的代碼中,使用 throw 關鍵字手動拋出了一個 Exception 異常。

四、總結

Java 異常可以分為受檢異常和非受檢異常。常見的異常類型包括:NullPointerException、IndexOutOfBoundsException、IllegalArgumentException、ArithmeticException 等。

異常處理可以使用 try-catch-finally 語句塊,也可以使用 throws 聲明異常類型。程序員還可以使用 throw 主動拋出異常。

原創文章,作者:KAYDE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/317553.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KAYDE的頭像KAYDE
上一篇 2025-01-11 16:27
下一篇 2025-01-11 16:27

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29

發表回復

登錄後才能評論