使用异常机制的技巧
1.异常处理不能代替简单的测试
2.不要过分的细化异常
3.利用异常层次结构
4.不要压制异常
5.在检测错误时,”苛刻“要比放任更好
6.不要羞于传递异常
使用断言
大部分确信某个属性符合要求,并且代码的执行依赖于这个属性。这个时候如果抛出异常会在程序中包含大量这种检查,拖慢程序运行速度,Java中引用了assert关键字assert 条件
和assert 条件:表达式
这两种形式都会对条件进行检测,如果结果为false,则抛出一个AssertionError异常。在第二种形式中将被传入AssertionError的构造器,并转换成一个消息字符串。
第二种形式的表达式部分目的是为了产生一个消息字符串,但是AssertionError对象并不存储表达式的值,如果使用表达式的值,就会试图从断言中恢复程序的运行,这不符合断言机制的初衷。
启动和禁用断言
在默认情况下禁言被禁用,可以运行程序时用-enableassertions
或-ea
选项启用:
Java -enableassertions MyApp
需要注意的时,在启用和禁用断言时不必重新编译程序。启用和禁用断言是类加载器的功能。当断言被禁用时,类加载器将跳过断言,因此不会降低代码的执行速度。也可以在某个类或整个包中使用断言。有些类直接由虚拟机加载,可以使用这些开关有选择的启用和禁用呢那些类中的断言。启动和禁用所有断言的-ea和-da开关不能应用到那些没有类加载器的”系统类“上。对于这些系统类来说,需要使用`-enableassertions/-esa开关启用断言。
使用断言完成参数检查
在Java中给出了3种处理系统错误的机制
1.抛出一个异常
2.日志
3.使用断言
断言失败是致命、不可恢复的错误。断言只用于开发和测试阶段。
为文档假设使用断言
断言是一种测试和调试截断使用的战术性工具,而日志是一种在程序的整个生命周期都可使用的策略性工具