第70项:对可恢复的情况使用受检异常,对编程错误使用运行时异常

Java中的异常分为受检异常、运行时异常和错误。受检异常用于表示可恢复的情况,强制调用者处理或传播异常。运行时异常表示编程错误,不应捕获,通常表示违反了前提条件。错误通常由JVM保留,表示无法恢复的严重问题。不要定义新的Error子类,自定义异常应继承自RuntimeException。受检异常应提供信息帮助恢复,如资金不足异常应提供缺口查询方法。
摘要由CSDN通过智能技术生成

  Java程序设计语言提供了是三种可抛出结构(throwable):受检异常(checked exceptions)运行时异常( runtime exceptions)错误(error)。在程序猿之间就存在一些困惑:什么时候适合使用哪种可抛出结构。虽然做决定的界限并不总是那么清晰,但还是有一些一般性的原则提供了强有力的指导。

  在决定使用受检的异常或者未受检的异常时,主要的原则是:如果期望调用者能够适当地恢复【到正常状态】,对于这种情况就应该使用受检的异常 。通过抛出受检的异常,强迫调用者在一个catch子句中处理该异常,或者将它传播出去。因此,方法中声明要抛出的每个受检的异常,都是对API用户的一种潜在的指示:与异常相关联的条件是调用这个方法的一种可能的结果。

  API的设计者让API用户面对受检的异常,以此强制用户从这个异常条件中恢复。用户可以忽视这样的强制要求,只需要捕获异常并忽略即可,但这往往不是个好办法(第77项)。

  有两种未受检的可抛出结构:运行时异常和错误。在行为上两者是等同的:它们都是不需要也不应该被捕获的可抛出结构。如果程序抛出未受检的异常或者错误,往往就属于不可恢复的情形,继续执行下去有害无益。如果程序没有捕获到这样的可抛出结构,将会导致当前线程停止(halt),并出现适当的错误消息。

  用运行时异常来表明编程错误 。大多数的运行时异常都表示违反了前提条件(precondition violation)。违反前提条件仅仅是指因为客户端API没有遵守API规范建立的约定。例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值