异常 - 断言 - 日志

这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战

异常

Java异常体系图:

image.png

  • Error和Exception下面的RunTimeException及其子类属于不需要强制捕获的异常。
  • 其他 exception 以下的其他的异常及其子类都需要强制捕获异常。

image.png

  • 异常体可以往下传递。

image.png

  • 不过这种用法平时并不怎么用。

一些使用异常中的建议:

  • 尽量使用JDK已定义异常!
  • 自定义异常应该从RuntimeException派生。
  • 先定义BaseException,再其派生子类。
  • 自定义异常应该提供多个构造方法。

断言

我们开发中看某些框架的代码的时候会看到assert xxx这种写法,这就是java的断言机制。

JVM默认关闭断言指令:

  • 给Java虚拟机传递-ea参数启用断言
  • 只能在开发和测试阶段启用断言

日志

日志是为了替代System.out.println(),可以定义格式,重定向到文件等 日志可以存档,便于追踪问题 日志记录可以按级别分类,便于打开或关闭某些级别 可以根据配置文件调整日志,无需修改代码。

JDK的log

jdk 内置logging(7个日志级别,默认为infoSEVERE WARNING INFO (默认级别) CONFIG FINE FINER FINEST)

image.png

代码中设置level,可以指定输出固定的那个内容。

缺点:

  • JVM启动时读取配置文件并完成初始化
  • JVM启动后无法修改配置
  • 需要在JVM启动时传递参数 -Djava.util.logging.config.file=config-file-name

Commons Log

是由Apache创建的一个日志模块,一般的用法如下:

image.png

我们开发中用的最多的还是下面Log4J。

Log4J

目前最流行的日志方式

image.png

组件化日志系统

  • appender 用来把日志输出不同的目的地
  • filter 用来过滤日志
  • layout 格式化输出格式
  • console 等等 输出到的地方

我们不需要关心这个,只需要通过配置文件来配置

通过Commons Logging也可以实现log4j

使用Log4j:

通过Commons Logging实现日志,不需要修改代码即可使用Log4j 、

使用Log4j只需要把log4j2.xml和相关jar放入classpath 、

如果要更换Log4j,只需要移除log4j2.xml和相关jar 只有扩展Log4j时,才需要引用Log4j的接口

参考文档: logging.apache.org/log4j/

使用配置xml

image.png

猜你喜欢

转载自juejin.im/post/7034908476677554184
今日推荐