zoukankan      html  css  js  c++  java
  • 《Effective Java》读书笔记八(异常)

    No57 只针对异常的情况才使用异常

    异常应该只用于异常的情况下,它们永远不应该用于正常的控制流。

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

    Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception)、运行时异常(run-time exception)和错误(error)。

    1. 如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。
    2. 用运行时异常来表明编程错误。例如:数组访问下标越界。
    3. 错误往往被JVM保留用于表示资源不足、约束失败,或者其它使程序无法继续执行的条件。

    No60 优先使用标准的异常

    表60 常用的异常

    异常

    使用场合

    IllegalArgumentException

    非null的参数值不正确

    IllegalStateException

    对于方法调用而言,对象状态不合适

    NullPointerException

    在禁止使用null的情况下数值为null

    IndexOutOfBoundsException

    下标参数值越界

    ConcurrentModificationException

    对禁止并发修改的情况下,检测到对象的并发修改

    UnsupportOperationException

    对象不支持用户请求的方法

    No62 每个方法抛出的异常都要有文档

    始终要单独地声明受检的异常,并且利用Javadoc的@throws标签标记,准确地记录下抛出每个异常的条件。

    No63 在细节消息中包含能捕获失败的信息

    为了捕获失败,异常的细节信息应该包含所有“对该异常有贡献”的参数和域的值。例如:IndexOutOfBoundsException异常的细节消息应该包含下界、上界以及没有落在界内的下标值。

    No65 不要忽略异常

    如果有空的catch块,至少,此catch块也应该包含一条说明,解释为什么可以忽略这个异常。

  • 相关阅读:
    linux 下spyder安装
    【C++】fill函数,fill与memset函数的区别
    【tensorflow使用笔记一】:安装linux下tensorflow环境的问题
    leetcode 49 字母异位词分组
    leetcode 1014. 在 D 天内送达包裹的能力
    【C++进阶:STL常见性质3】
    【C++进阶:STL常见性质2】
    【C++进阶:STL常见性质】
    【C++进阶:移位运算符的用法】
    面向对象之静态方法
  • 原文地址:https://www.cnblogs.com/nayitian/p/3250039.html
Copyright © 2011-2022 走看看