第九章 异常
57. 只针对异常的情况才使用异常
58. 对可恢复的情况使用受检异常,对编程错误使用运行时异常
59. 避免不必要的使用受检的异常
60. 优先使用标准的异常
- 最好重用现有的异常
61. 抛出与抽象对应的异常
62. 每个方法抛出的异常都要有文档
63. 在细节消息中包含能捕获失败的信息
- 为了捕获失败,异常的细节信息应该包含所有“对该异常有贡献”的参数和域的值
64. 努力使失败保持原子性
失败原子性:一般而言,失败的方法调用应该使对象保持在被调用之前的状态
实现失败原子性的几种途径
- 设计一个不可变的对象
- 对于可变对象,在执行操作之前检查参数的有效性,使得在对象状态被修改之前,先抛出适当的异常
- 编写一段恢复代码(远没有那么常用)