在Java中,异常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)(也称为运行时异常)。
1. 受检异常(Checked Exception):受检异常是指在编译时需要进行处理或声明的异常。这些异常通常是由外部因素引起的,例如文件操作、网络连接、数据库操作等。受检异常必须在代码中显式处理或在方法签名中使用`throws`关键字声明。常见的受检异常包括:
- IOException(输入输出异常)
- SQLException(SQL异常)
- FileNotFoundException(文件未找到异常)
- ClassNotFoundException(类未找到异常)
- InterruptedException(线程中断异常)
2. 非受检异常(Unchecked Exception):非受检异常是指在编译时不需要强制处理或声明的异常。这些异常通常是由程序错误或逻辑错误引起的,例如空指针引用、数组越界、类型转换错误等。非受检异常不需要在代码中显式处理或声明。常见的非受检异常包括:
- NullPointerException(空指针异常)
- ArrayIndexOutOfBoundsException(数组越界异常)
- ClassCastException(类转换异常)
- ArithmeticException(算术异常)
- IllegalArgumentException(非法参数异常)
除了受检异常和非受检异常外,还有一个特殊的异常类型是**错误(Error)**。错误通常是由于严重的系统问题或虚拟机错误引起的,无法通过代码进行恢复。常见的错误包括`OutOfMemoryError`(内存溢出错误)和`StackOverflowError`(栈溢出错误)。与异常不同,错误通常无需捕获或处理,而是由Java虚拟机进行处理。
需要注意的是,异常处理在编写健壮的Java程序中非常重要。通过适当地处理异常,可以增加程序的稳定性和可靠性,避免异常情况导致的程序崩溃或数据丢失。