抛出与抽象相对应的异常(61)

若是方法抛出的异常和外层执行任务没有明显的联系,会令人很困惑spa

  • 更高层实现应该捕获底层异常,而且抛出按照高层逻辑进行解释的异常

若是底层的异常对于调试有帮助,能够考虑使用异常链3d

  • 高级异常的构造须要低级异常做为参数传入

  • 大部分标准异常都支持链的构造器

  • 对于不支持的,能够使用Throwable initCause来实现
    • getCause 获取缘由
    • 还能够使用堆栈轨迹,集成到更高级的异常

尽管异常转译比不加思索的抛出底层异常有所改进,可是也请不要滥用调试

  • 在调用底层异常时,多作些检查,确保其执行正常,从而避免抛出异常

若是没法避免底层异常,次选方案是让高层绕过,使用某种适当的记录机制将异常记录下来blog

总而言之::异常转译和异常链都不错get

  • 异常转译使得异常语义更加明确
  • 异常链,容许逐层进行分析
相关文章
相关标签/搜索