Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception),运行时异常(run-time exception)和错误(error)。
关于什么时候适合使用哪种可抛出结构,程序员中存在一些困惑。虽然这项决定并不总是那么清晰,但是还是有一般性的原则提出了强有力的指导。
在决定使用受检的异常或者未受检的异常时,主要的原则是:如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。通过抛出受检的
异常,强迫调用者在一个catch子句中处理该异常,或者将它传播出去。因此,在方法中声明要抛出的每个受检异常,都是对API用户的一种潜在指示:
与异常相关联的条件是调用这个方法的一种可能结果。
有两种未受检的可抛出结构:运行时异常和错误。在行为上两者是等同的:它们都是不需要也不应该被捕获的可抛出结构。如果程序抛出未受检的异常或者
错误,往往就属于不可恢复的情形,继续执行下去有害无益。程序抛出运行时异常或者错误,将会导致当前的线程停止,并出现适当的错误消息。
错误往往被JVM保留用于表示资源不足,约束失败,或者其他使程序无法继续执行的条件。由于这已经是个几乎被普遍接受的惯例,因此最好不要再实现
任何新的Error子类。因此,你所实现的未受检的抛出结构都应该是RuntimeException的子类。
时间: 2024-10-01 07:17:02