时间:2021-05-19
本文实例为大家分享了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; }③.打印内容
可以看到,打印内容明显变少
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java中自定义异常详解及实例代码下面做了归纳总结,欢迎批评指正自定义异常classChushulingExceptionextendsException{pu
Java自定义异常类的实例详解为什么要自己编写异常类?假如jdk里面没有提供的异常,我们就要自己写。我们常用的类ArithmeticException,Null
前言有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出。注意,自定义异常只能由自己抛出。python解释器是不知道用
python自定义异常实例详解本文通过两种方法对Python自定义异常进行讲解,第一种:创建一个新的exception类来拥有自己的异常,第二种:raise唯一
一:自定义异常类:package自定义异常;//或者继承RuntimeException(运行时异常)publicclassMyExceptionextends