第五十八条:对可恢复的情况使用受检异常,对编程错误使用运行时异常

Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception),运行时异常(run-time exception)和错误(error)。

关于什么时候适合使用哪种可抛出结构,程序员中存在一些困惑。虽然这项决定并不总是那么清晰,但是还是有一般性的原则提出了强有力的指导。

在决定使用受检的异常或者未受检的异常时,主要的原则是:如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。通过抛出受检的

异常,强迫调用者在一个catch子句中处理该异常,或者将它传播出去。因此,在方法中声明要抛出的每个受检异常,都是对API用户的一种潜在指示:

与异常相关联的条件是调用这个方法的一种可能结果。

有两种未受检的可抛出结构:运行时异常和错误。在行为上两者是等同的:它们都是不需要也不应该被捕获的可抛出结构。如果程序抛出未受检的异常或者

错误,往往就属于不可恢复的情形,继续执行下去有害无益。程序抛出运行时异常或者错误,将会导致当前的线程停止,并出现适当的错误消息。

错误往往被JVM保留用于表示资源不足,约束失败,或者其他使程序无法继续执行的条件。由于这已经是个几乎被普遍接受的惯例,因此最好不要再实现

任何新的Error子类。因此,你所实现的未受检的抛出结构都应该是RuntimeException的子类。

原文地址:https://www.cnblogs.com/wangliyue/p/4543947.html