11.4.1 启用和禁用断言
禁用方式:启动时不配置断言选项
启动方式:配置断言选项 -enableassertions 或 -ea
java -enableassertions XX
java -ea XX
特定类禁用断言
java -ea:Main -da:MyClass MyApp
问:启动或禁用断言需要重新编译程序吗?
答:不需要。启用或禁用断言的是类加载器而非编译器。
11.4.2 使用断言的建议
Java常用的错误处理:
(1)抛异常
(2)写日志
(3)用断言
断言的使用建议:
11.4.3 为文档使用断言
文档说明的过程,可以是测试过程,这个部分可以使用断言,以方便程序员测试工作(总之就是只能用于开发测试,最好编写特定的测试编码,与业务逻辑分开,而非混入原本的业务逻辑之中)
断言小总结:
11.5 记录日志
个人感觉这是最实用的方式,大厂小厂平时用都必备。各种日志记录的API都大同小异,建议认真学习。
日志API的优点:
(1)分级别,根据级别情况可以查看不同的日志(INFO等)
(2)可开关,而无需大量修改代码(直接修改配置文件)
(3)定向到不同处理器,用于控制台显示(测试环境可针对进行不同配置)
(4)可自定义过滤器(过滤输出到特定渠道的日志级别等)
(5)不同的记录日志方式(可既输出到控制台,又输出)
(6)可同时使用多个日志记录器(比如可以记录级别,也可以用普通的println输出)
(7)可替代配置(其实java所有的框架几乎都可以通过文件配置或者启动时调参配置)
11.5.1 基本日志
需要导入 java.util.logging.Logger
Logger.global.info("File->Open menu item selected");
我们注意到,这个位置出现了一条删除线,证明这个方法被废弃了
打印失败
看一下源码废弃的注释。大意是,直接有几率死锁所以废弃了,用 Logger.getGlobal() 代替,试一下:
Logger.getGlobal().info("File->Open menu item selected");成功
区别:
它其实做的事情就是,如果日志管理器未初始化,先进行初始化(单例模式),然后再返回 global
禁用日志后,再输出日志,则不会打印信息:
public class Main {public static void main(String[] args) {
Main solution = new Main();
Logger logger = Logger.getGlobal();
logger.setLevel(Level.OFF);
logger.info("File->Open menu item selected");
}
}
相关内容:选择 《Java核心技术 卷1》查找相关笔记
评论