Java 异常类是用于表示程序运行时出现的各种错误情况的类。Java 的异常类体系结构基于 Throwable
类,它有两个直接子类:Error
和 Exception
。以下是 Java 异常类的分类和一些常用异常类的介绍:
Throwable 类
- Error 类:表示程序运行时的严重错误,通常是由虚拟机运行时环境引起的,程序无法处理这些错误。常见的
Error
子类包括:VirtualMachineError
:表示虚拟机错误,如OutOfMemoryError
(内存溢出错误)和StackOverflowError
(栈溢出错误).LinkageError
:表示链接错误,如NoClassDefFoundError
(找不到类定义错误)和UnsatisfiedLinkError
(未满足链接错误).
- Exception 类:表示程序运行时可以被捕获和处理的异常。
Exception
类又分为受检异常和非受检异常:- 受检异常(Checked Exception):在编译时需要显式捕获或声明抛出的异常。常见的受检异常类包括:
IOException
:表示输入/输出操作失败或中断的异常,如FileNotFoundException
(文件未找到异常)和EOFException
(文件结束异常).SQLException
:表示数据库访问错误的异常.InterruptedException
:表示一个线程被另一个线程中断的异常.
- 非受检异常(Unchecked Exception):在编译时不需要显式捕获或声明抛出的异常,包括运行时异常和错误。常见的非受检异常类包括:
RuntimeException
:表示运行时错误,如NullPointerException
(空指针异常)、ArrayIndexOutOfBoundsException
(数组索引越界异常)、ClassCastException
(类转换异常)、IllegalArgumentException
(非法参数异常)等.AssertionError
:表示断言失败的异常.
- 受检异常(Checked Exception):在编译时需要显式捕获或声明抛出的异常。常见的受检异常类包括:
异常类的使用
- 抛出异常:使用
throw
关键字可以手动抛出异常。例如:if (someCondition) { throw new IllegalArgumentException("Invalid argument"); }
- 捕获异常:使用
try-catch
块可以捕获并处理异常。例如:try { // 可能抛出异常的代码 } catch (IOException e) { // 处理 IOException 异常 } catch (Exception e) { // 处理其他类型的异常 }
- 声明抛出异常:在方法签名中使用
throws
关键字可以声明方法可能抛出的异常。例如:public void readFile(String filename) throws IOException { // 可能抛出 IOException 的代码 }
自定义异常类
可以通过继承 Exception
或 RuntimeException
类来创建自定义异常类。例如:
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
自定义异常类可以用来表示特定业务场景下的错误情况,使异常处理更加清晰和有针对性.
掌握 Java 异常类的分类和使用,可以帮助我们更好地理解和处理程序运行时的错误情况,提高程序的健壮性和可维护性.