Java存在三种可抛出结构(throwable):受检异常(checked exception)、运行时异常(runtime exception)和错误(error)。使用原则是:
1、如果期望调用者能够恢复,则应该使用受检异常。抛出受检异常,可以强迫调用者在一个catch子句中处理该异常,或者继续向外传播。
2、运行时异常是指难以恢复或者不可恢复的程序错误。大多数运行时异常都是表明前提违例(precondition violation指API的调用方没有遵循调用约定)。
3、错误(error)被JVM保留用于指示资源不足、约束失败或者其他程序无法继续执行的情况。最好不要实现新的Error子类,所有抛出的未受检异常都应该是RuntimeException的子类。
运行时异常 可以依靠程序员编程的规范性来避免。
应用场景: 如果想终止程序 则抛出运行时异常 如果对异常想进行处理 则抛出检查异常。