1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 1.尽量不要捕获 Java 类库中定义的继承自 RuntimeException 的运行时异常类,如:IndexOutOfBoundsException / NullPointerException,这类异常由程序员预检查来规避,保证程序健壮性。
2.一大段代码进行 try-catch,这是不负责任的表现。catch 时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理。
3.应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架 SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一
4.谨慎地记录日志。生产环境禁止输出 debug 日志;有选择地输出 info 日志
5.对 trace/debug/info 级别的日志输出,必须使用条件输出形式或者使用占位符的方 式。
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
6.finally 块必须对资源对象、流对象进行关闭,有异常也要做 try-catch 7.捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容
8.如果日志用英文描述不清楚,推荐使用中文注释。对于中文 UTF-8 的日志,在 secureCRT 中,set encoding=utf-8 9.生产环境禁止直接使用 System.out 或 System.err 输出日志或使用 e.printStackTrace()打印异常堆栈
10.打印error log的方法:logger.error(e.getMessage, e);这样打印出异常的所有堆栈
|