您好,登录后才能下订单哦!
这篇文章给大家介绍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中如何自定义异常打印内容就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。