《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_初始化

11.4.1 启用和禁用断言

禁用方式:启动时不配置断言选项

启动方式:配置断言选项 -enableassertions 或 -ea

java -enableassertions XX

java -ea XX

特定类禁用断言

java -ea:Main -da:MyClass MyApp

问:启动或禁用断言需要重新编译程序吗?

答:不需要。启用或禁用断言的是类加载器而非编译器。

11.4.2 使用断言的建议

Java常用的错误处理:

(1)抛异常

(2)写日志

(3)用断言

断言的使用建议:

  1. 断言失败是致命、不可恢复的(参考异常不catch系统崩溃)
  2. 断言检查只用于开发测试
  3. 严重错误可考虑使用断言,比如传入空值,而使用过程中,传入的参数不可为空

11.4.3 为文档使用断言

文档说明的过程,可以是测试过程,这个部分可以使用断言,以方便程序员测试工作(总之就是只能用于开发测试,最好编写特定的测试编码,与业务逻辑分开,而非混入原本的业务逻辑之中)

断言小总结:

  1. 测试用或者开发进行测试用
  2. 管理严格的系统对于不可能的输入用

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");

《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_初始化_02

我们注意到,这个位置出现了一条删除线,证明这个方法被废弃了

《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_idea_03

打印失败

《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_java_04

看一下源码废弃的注释。大意是,直接有几率死锁所以废弃了,用 Logger.getGlobal() 代替,试一下:

Logger.getGlobal().info("File->Open menu item selected");

《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_idea_05

成功

区别:

《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_开发测试_06

《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_idea_07

它其实做的事情就是,如果日志管理器未初始化,先进行初始化(单例模式),然后再返回 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》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_初始化_08

相关内容:选择 《Java核心技术 卷1》查找相关笔记

评论🌹点赞👍收藏✨关注👀,是送给作者最好的礼物,愿我们共同学习,一起进步


公众号 钰娘娘知识汇总