10.3 Checked异常和Runtime异常体系

10.3 Checked异常和Runtime异常体系

java异常分类

Java的异常被分为两大类: Checked异常和Runtime异常(运行时异常)。

  • 所有的RuntimeException类及其子类的实例被称为Runtime异常;
  • 不是RuntimeException类及其子类的异常实例,则被称为Checked异常。

Java程序必须显示处理Checked异常

Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误,无法通过编译

Checked异常处理的两种方式

对于Checked异常的处理方式有如下两种。

  • 如果当前方法明确知道如何处理该异常,那么程序应该使用try...catch块来捕获该异常,然后在对应的catch块中修复该异常。
  • 当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出该异常。

Runtime异常不需要显示处理

Runtime异常则更加灵活, Runtime异常无须显式声明抛出,如果程序需要捕获Runtime异常,也可以使用try...catch块来实现。

总结

  • Checked必须显示处理,处理时可以使用try...catch语句,也可以直接抛出
  • Runtime不需要显示处理,如有必要也可以使用try...catch捕获Runtime异常。