Java的异常类分为哪两种

简介

在Java中,异常是一种在程序执行过程中可能发生的错误或异常情况的表示。Java中的异常是以类的形式存在的,它们继承自java.lang.Throwable类。Java的异常类可以分为两种:**Checked Exception(受检异常)Unchecked Exception(非受检异常)**。

受检异常(Checked Exception)

受检异常是在Java编译阶段被检查的异常。它们是那些在方法的声明中必须显式地被声明或捕获的异常。受检异常通常表示程序中可能出现的外部错误或异常情况,例如文件不存在或网络连接中断。受检异常需要程序员明确处理,否则编译器会报错。

Java中的受检异常是由Exception类及其子类表示的。下表展示了受检异常的相关信息:

异常类 说明
IOException 输入/输出操作发生错误
SQLException SQL操作发生错误
ClassNotFoundException 试图加载类时找不到该类的定义
InterruptedException 一个线程被另一个线程中断时抛出的异常
ParseException 解析字符串时发生错误
NoSuchMethodException 找不到某个方法时抛出的异常
... ...

举个例子,假设我们要读取一个文件的内容,但文件可能不存在。在这种情况下,我们需要使用try-catch语句来处理FileNotFoundException异常:

try {
    FileReader fileReader = new FileReader("file.txt");
    // 读取文件内容的操作
} catch (FileNotFoundException e) {
    System.out.println("文件不存在");
}

上述代码中,FileReader的构造函数可能抛出FileNotFoundException异常,我们使用try-catch语句捕获并处理该异常。

非受检异常(Unchecked Exception)

非受检异常是在运行时才会被检查的异常。它们是那些不需要在方法的声明中显式地被声明或捕获的异常。非受检异常通常表示程序中的错误或错误使用,例如除数为零、数组索引越界或空指针引用。

Java中的非受检异常是由RuntimeException类及其子类表示的。下表展示了非受检异常的相关信息:

异常类 说明
ArithmeticException 在算术运算中,出现除数为零或溢出的情况
ArrayIndexOutOfBoundsException 数组索引越界
NullPointerException 当应用程序尝试在需要对象的地方使用null时,抛出该异常
NumberFormatException 当字符串转换为数字的方法参数格式不正确时,抛出该异常
ClassCastException 当试图将对象强制转换为不是实例类的子类时,抛出该异常
IllegalArgumentException 抛出该异常表明向方法传递了一个不合法或不正确的参数
... ...

举个例子,假设我们要进行除法运算,但除数可能为零。在这种情况下,如果除数为零,将会抛出ArithmeticException异常:

int dividend = 10;
int divisor = 0;

try {
    int result = dividend / divisor;
    // 进行其他操作
} catch (ArithmeticException e) {
    System.out.println("除数不能为零");
}

上述代码中,dividend / divisor会抛出ArithmeticException异常,我们使用try-catch语句捕获并处理该异常。

异常处理的流程

下面是处理Java异常的一般流程。请注意,这只是一种常见的处理异常的方式,具体的处理方式可以根据实际需求进行调整。

  1. 代码块中可能抛出异常的语句。
  2. 使用try关键字将可能抛出异常的语句包裹起来。