当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2022-07-13
11.4.1 启用和禁用断言 禁用方式:启动时不配置断言选项 启动方式:配置断言选项 -enableassertions 或 -ea java -enableassertions XX java -ea XX 特定类禁用断言 java -ea:Main -da:MyClass MyApp 问:启动或


《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)用断言

断言的使用建议:

  • 断言失败是致命、不可恢复的(参考异常不catch系统崩溃)
  • 断言检查只用于开发测试
  • 严重错误可考虑使用断言,比如传入空值,而使用过程中,传入的参数不可为空
  • 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");

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

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

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

    打印失败

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

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

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

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

    成功

    区别:

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

    《Java 核心技术 卷1》 笔记 第11章 异常、日志、断言和调试(4)断言用法+日志基础_开发测试_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)断言用法+日志基础_java_08

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

    评论

    网友评论