10.3 Checked异常和Runtime异常体系
java异常分类
Java
的异常被分为两大类: Checked
异常和Runtime
异常(运行时异常)。
- 所有的
RuntimeException
类及其子类的实例被称为Runtime
异常; - 不是
RuntimeException
类及其子类的异常实例则被称为Checked
异常。
Java程序必须显示处理Checked异常
只有Java
语言提供了Checked
异常,其他语言都没有提供Checked
异常。Java
认为Checked
异常都是可以被处理(修复)的异常,所以Java
程序必须显式处理Checked
异常。如果程序没有处理Checked
异常,该程序在编译时就会发生错误,无法通过编译。
Checked异常处理的两种方式
对于Checked
异常的处理方式有如下两种。
- 如果
当前方法明确知道如何处理该异常
,那么程序应该使用try-catch
块来捕获该异常,然后在对应的catch
块中修复该异常。 - 当前方法不知道如何处理这种异常,应该在定义该方法时声明
抛出
该异常。
Runtime异常不需要显示处理
Runtime
异常则更加灵活, Runtime
异常无须显式声明抛出,如果程序需要捕获Runtime
异常,也可以使用try-catch
块来实现。
总结
Checked
必须显示处理,处理时可以使用try-catch
语句,也可以直接抛出Runtime
不需要显示处理,如有必要也可以使用try-catch
捕获Runtime
异常.