现在的位置: 首页 > 编程语言 > 正文

java自定义异常打印内容详解

2020年02月13日 编程语言 ⁄ 共 983字 ⁄ 字号 评论关闭

本文实例为大家分享了java自定义异常打印内容的具体代码,供大家参考,具体内容如下

背景:在开发中,我们可能会使用到自定义异常,但是,这个自定义异常在打印日志时,往往打印的内容比较多。

1.自定义异常打印内容

可以看到,虽然我们使用的是自定义异常,但是当抛出时,还是会打印出堆栈的全部信息。

2.查看源码

通过查看源码,我们可以得知,当抛出异常时,程序会调用此异常的fillInStackTrace方法,但是,大部分异常都没有对该方法做处理。基本是调用super的方法。

可以看到,此方法的父类实现,是在Throwable类中。而且此方法加了synchronized锁,查看堆栈的信息。那么必然会影响性能。

底层实现是native,调用C语言的方法。

3.解决方法

①.编写自定义异常

// 此处为lombok注解@Getter@AllArgsConstructorpublic enum ExceptionEnum { AUTH(1, "认证异常") ; private Integer code; private String msg;}public class AppException extends RuntimeException { public AppException(ExceptionEnum exceptionEnum) { super(exceptionEnum.getMsg()); } // 关键 @Override public Throwable fillInStackTrace() { return this; } public static void main(String[] args) { throw new AppException(ExceptionEnum.AUTH); }}

②.重写fillInStackTrace方法

重写该方法后,会只打印第一条信息,这样不仅可以节省日志空间,方便查看,更可以提高部分性能。

@Override public Throwable fillInStackTrace() { return this; }

③.打印内容

可以看到,打印内容明显变少

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: java自定义异常打印内容详解

以上就上有关java自定义异常打印内容详解的相关介绍,要了解更多java自定义异常打印内容,java自定义打印内容,java打印内容内容请登录学步园。

抱歉!评论已关闭.