exception).运行时异常(run-time exception).错误(error).决定使用受检异常或是非受检异常时, 主要的原则: 如果期望调用者能够适当地恢复, 对于这种情况就应该使用受检的异常...大多数运行时异常都表示前提违例, 例如数组越界访问.如果无法决定到底应该用受检(checked exception)还是非受检异常(runtime exception), (无法确定是否可能恢复), 就用...(有时候可以通过检查高层传入底层的参数实现.)如果底层异常的确不可避免, 让高层默默解决这些异常, 从而使高级别方法的调用者与低层问题隔离...., 然后只要把它们放到消息描述中, 就可以自动产生细节信息.第76条 努力使失败保持原子性失败原子性(failure atomic): 失败的方法调用应该使对象保持在被调用之前的状态.实现这种效果的途径...:设计一个不可变的对象.在执行操作之前检查参数的有效性, 在对象的状态被修改之前抛出适当的异常. -> 让可能会失败的计算部分都在对象状态被修改之前发生.在对象的一份临时拷贝上执行操作, 当操作完成后再用临时拷贝中的结果代替对象的内容