对于可恢复情况使用受检异常,对于编程错误使用运行时异常(58)

java 程序设计语言可抛出三种结构(throwable):

  • 受检异常
  • 运行时异常
  • 错误

虽然什么时候抛出什么,不总是那么的清晰,但是依然存在一些指导性原则

  • 如果可以适当的恢复,请使用受检异常(强迫调用者处理该异常或者抛出去)
  • API 设计者让api 用户面对受检异常,强迫处理受检异常

未受检的抛出结构包括(运行时异常、错误)

  • 二者都是不需要也不应该被捕获的可抛出结构
  • 如果抛出为受检异常,往往就属于不可恢复的情形,继续执行下去有害无益

使用运行时异常表明变成错误

  • 大多数运行时异常都是前提违例导致的
    • 前提违例:调用者未遵守api的调用规范

虽然 java 语言规范没要求,但是错误往往被jvm保留用来表示资源不足、约束失败、或其他是程序无法执行下去的条件

  • 约定俗成,最好不要再去创建Error 的子类
  • 所有未受检抛出结构都应该是RuntimeException 的子类
  • 可以定义一个新的抛出结构(不属于上述三者),这样做没有任何益处,而且困扰api使用者

总之:

  • 可恢复异常,使用受检异常
  • 程序错误,使用运行时异常
    • 如果不清楚是否可恢复,最好使用未受检异常
  • 受检异常往往指明了恢复条件,提供辅助方法就很重要(比如电话呼叫失败,捕获异常可以查询欠费金额并且返回给用户看)

转载于:https://my.oschina.net/u/3847203/blog/2236755

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值