1、什么是异常

Java异常是在程序执行过程中发生的意外或异常情况。当程序遇到错误或异常时,它会抛出一个异常对象,该对象包含有关错误的信息。Java异常机制允许程序员捕获和处理这些异常,以便在出现问题时采取适当的措施。

Java异常分为两种类型:已检查异常(Checked Exceptions)和未检查异常(Unchecked Exceptions)。

1.已检查异常:是指在编译时强制检查的异常,必须在代码中显式地处理或声明抛出。例如,IOException和SQLException就是已检查异常。

2.未检查异常:是指在编译时不强制检查的异常,不需要在代码中显式地处理或声明抛出。常见的未检查异常包括NullPointerException、ArrayIndexOutOfBoundsException和ArithmeticException等。

2.常见的 Exception 有哪些?

在Java中,常见的Exception包括但不限于以下几种:

  1. NullPointerException(空指针异常):当尝试使用空引用调用对象的方法或访问对象的字段时抛出。
  2. ArrayIndexOutOfBoundsException(数组越界异常):当尝试访问数组中不存在的索引时抛出。
  3. IllegalArgumentException(非法参数异常):当传递给方法的参数不满足方法的要求时抛出。
  4. IllegalStateException(非法状态异常):当对象的状态不符合方法调用的前提条件时抛出。
  5. IOException(输入输出异常):在处理输入输出操作时发生错误时抛出。
  6. ClassNotFoundException(类未找到异常):当尝试加载不存在的类时抛出。
  7. InterruptedException(中断异常):在线程等待、休眠或阻塞的过程中被中断时抛出。
  8. SQLException(SQL异常):在访问数据库时发生错误时抛出。
  9. FileNotFoundException(文件未找到异常):当尝试访问不存在的文件时抛出。
  10. ArithmeticException(算术异常):在算术操作中出现错误时抛出,例如除以零。

    3.Exception 处理方式/用法

    在Java中,我们可以使用try-catch语句块来处理异常。try块用于包含可能会抛出异常的代码,而catch块用于捕获并处理异常。以下是几种处理异常的常见用法,并附带示例代码说明:
    1.捕获并处理特定类型的异常
    在捕获的异常里面我们就可以做一些业务操作,例如:异常了,我们的业务需要回滚。

try {
    // 可能会抛出异常的代码
    int result = 10 / 0; // 除以零会抛出ArithmeticException
} catch (ArithmeticException e) {
    // 捕获并处理ArithmeticException异常
    System.out.println("除以零错误发生:" + e.getMessage());
}

2.捕获并处理多个类型的异常
此处注意,异常的捕获是逐步向下的,平级的异常无所谓上下方,但是 Exception 这种父类异常,要放在子类异常的下面,否则会被 Exception 捕获.

try {
    // 可能会抛出异常的代码
    String str = null;
    str.length(); // str为null,会抛出NullPointerException
} catch (NullPointerException e) {
    // 捕获并处理NullPointerException异常
    System.out.println("空指针异常发生:" + e.getMessage());
} catch (ArithmeticException e) {
    // 捕获并处理ArithmeticException异常
    System.out.println("除以零错误发生:" + e.getMessage());
}

3.使用finally块进行清理操作

try {
    // 可能会抛出异常的代码
    // ...
} catch (Exception e) {
    // 捕获并处理异常
    // ...
} finally {
    // 在try或catch块执行后,无论是否发生异常,都会执行的代码块
    // 通常用于进行资源的释放或清理操作,如关闭文件、数据库连接等
    // ...
}

4.抛出自定义异常

public class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

public class Example {
    public static void main(String[] args) {
        try {
            // 抛出自定义异常
            throw new CustomException("自定义异常信息");
        } catch (CustomException e) {
            // 捕获并处理自定义异常
            System.out.println("自定义异常发生:" + e.getMessage());
        }
    }
}

这些是Java中处理异常的几种常见用法。通过使用try-catch语句块,我们可以捕获并处理可能发生的异常,从而保证程序的稳定性和可靠性。


刀枪不入的煎鸡蛋
1 声望1 粉丝