09-异常(69-77)

69. 只针对异常的情况才使用异常

如题。

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

如题。

71. 避免不必要的使用受检异常

如题。

72. 优先使用标准异常

最常见的可重用异常:

image-20210217184759215

73. 抛出与抽象对应的异常

更高层的实现应该捕获低层的异常,同时抛出可以按照高层抽象进行解释的异常。这种做法称为异常转译(exception translation)。

image-20210217185022348

74. 每个方法抛出的所有异常都要建立文档

使用Javadoc的@throws标签记录下一个方法可能抛出的每个未受检异常,但是不要使用throws关键字将未受检的异常包含在方法的声明中。

75. 在细节消息中包含失败 - 捕获信息

为了捕获失败,异常的细节信息应该包含“对该异常有贡献”的所有参数和域的值。

76. 努力是失败保持原子性

优先判断抛出异常,或者使用事务。

image-20210217185344308

77. 不要忽略异常

如果选择忽略异常,catch 块中应该包含一条注释,说明为什么可以这么做,并且变量应该命名为ignored:

image-20210217185455294


09-异常(69-77)
https://janycode.github.io/2020/09/16/02_编程语言/01_Java/04_EffectiveJava/09-异常(69-77)/
作者
Jerry(姜源)
发布于
2020年9月16日
许可协议