首页 经验

在 Java 中,异常分为两大类:检查型异常(Checked Exception)和运行时异常(Runtime Exception)

时间: 2024-10-18 21:53:51

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)


在 Java 中,异常分为两大类:检查型异常(Checked Exception)和运行时异常(Runtime Exception)。这两类异常在处理方式、发生时间等方面有显著的不同。以下是对这两类异常的详细比较和说明。


1. 检查型异常(Checked Exception)


特点:

- 编译时检测:检查型异常在编译时被检测,如果代码中可能抛出这些异常而没有进行处理,编译器会报错。

- 强制处理:必须在代码中显式处理这些异常,可以通过 try-catch 块进行捕获,或者在方法签名中使用 throws 语句声明将其抛出。

  

常见的检查型异常:

- IOException:输入输出相关的异常,如读写文件时出错。

- SQLException:与数据库操作相关的异常。

- ClassNotFoundException:当通过字符串指定的名称无法找到类时抛出。

- FileNotFoundException:尝试打开一个不存在的文件时抛出。


示例:

java

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;


public class CheckedExceptionExample {

    public static void main(String[] args) {

        File file = new File("nonexistent.txt");

        try {

            Scanner scanner = new Scanner(file); // 可能引发 FileNotFoundException

            while (scanner.hasNextLine()) {

                System.out.println(scanner.nextLine());

            }

            scanner.close();

        } catch (FileNotFoundException e) {

            System.out.println("文件未找到: " + e.getMessage());

        }

    }

}


2. 运行时异常(Runtime Exception)


特点:

- 运行时检测:运行时异常不会在编译时被检测,而是在程序运行时出现。

- 可选处理:对于运行时异常,开发者可以选择是否处理。虽然不处理这些异常不会导致编译错误,但在运行时仍然可能导致程序崩溃。


常见的运行时异常:

- NullPointerException:当试图访问或操作一个空对象时抛出。

- ArrayIndexOutOfBoundsException:试图访问数组的非法索引时抛出。

- ArithmeticException:算术运算异常,如除以零。

- ClassCastException:尝试将对象强制转换为不兼容的类时抛出。


示例:

java

public class RuntimeExceptionExample {

    public static void main(String[] args) {

        // 示例:NullPointerException

        String str = null;

        try {

            System.out.println(str.length()); // 可能引发 NullPointerException

        } catch (NullPointerException e) {

            System.out.println("捕获到 NullPointerException: " + e.getMessage());

        }


        // 示例:ArithmeticException

        try {

            int result = 10 / 0; // 可能引发 ArithmeticException

        } catch (ArithmeticException e) {

            System.out.println("捕获到 ArithmeticException: " + e.getMessage());

        }


        // 示例:ArrayIndexOutOfBoundsException

        int[] numbers = {1, 2, 3};

        try {

            System.out.println(numbers[3]); // 可能引发 ArrayIndexOutOfBoundsException

        } catch (ArrayIndexOutOfBoundsException e) {

            System.out.println("捕获到 ArrayIndexOutOfBoundsException: " + e.getMessage());

        }

    }

}


总结


- 检查型异常:需要在编译时进行处理,是程序设计时的错误处理机制。通常与外部环境相关,如文件操作、数据库连接等。

- 运行时异常:不需要在编译时强制处理,通常反映程序的逻辑错误或不当使用,建议进行合理的错误处理和验证。


在实际开发中,应根据情况合理使用和处理两类异常,以提升代码的稳健性和可维护性。


上一个 Java Exception类型,常见Exception 文章列表 下一个 Java内核

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号