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

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

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

虽然何时抛出什么,不老是那么的清晰,可是依然存在一些指导性原则api

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

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

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

使用运行时异常代表变成错误设计

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

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

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

总之:io

  • 可恢复异常,使用受检异常
  • 程序错误,使用运行时异常
    • 若是不清楚是否可恢复,最好使用未受检异常
  • 受检异常每每指明了恢复条件,提供辅助方法就很重要(好比电话呼叫失败,捕获异常能够查询欠费金额而且返回给用户看)
相关文章
相关标签/搜索