在Java中,异常分为两大类:Checked Exception(受检异常)和Unchecked Exception(非受检异常)。
Checked Exception(受检异常):
- Checked Exception是在编译时由编译器强制检查的异常,程序员必须显式地处理或声明它们,否则代码将无法通过编译。
- 这类异常主要继承自
Exception
类(但不包括RuntimeException
及其子类),例如IOException
、SQLException
等。 - Checked Exception通常表示程序在运行时遇到了一些外部的、不可预测的情况,程序必须通过捕获(try-catch)或声明(throws)来处理。
public class Example { public static void main(String[] args) { try { // 可能抛出Checked Exception的代码 } catch (IOException e) { // 处理IOException } } }
Unchecked Exception(非受检异常):
- Unchecked Exception是在运行时抛出的异常,编译器不会检查它们,因此程序员无需显式地捕获或声明这些异常。
- Unchecked Exception主要继承自
RuntimeException
类,例如NullPointerException
、ArrayIndexOutOfBoundsException
等。 - 通常,Unchecked Exception表示程序内部逻辑错误或运行时错误,程序员可以选择处理或直接修复代码。
public class Example { public static void main(String[] args) { // 可能抛出Unchecked Exception的代码 } }
总的来说,Checked Exception通常用于处理外部资源、IO 操作等可能发生的异常情况,而Unchecked Exception通常用于表示程序内部错误或逻辑错误。对于Unchecked Exception,程序员可以选择在代码中进行修复,而不是强制性地处理。