java自定义异常打印内容详解
2019-10-28 18:06
3383 查看
本文实例为大家分享了java自定义异常打印内容的具体代码,供大家参考,具体内容如下
背景:在开发中,我们可能会使用到自定义异常,但是,这个自定义异常在打印日志时,往往打印的内容比较多。
1.自定义异常打印内容
可以看到,虽然我们使用的是自定义异常,但是当抛出时,还是会打印出堆栈的全部信息。
2.查看源码
通过查看源码,我们可以得知,当抛出异常时,程序会调用此异常的fillInStackTrace方法,但是,大部分异常都没有对该方法做处理。基本是调用super的方法。
可以看到,此方法的父类实现,是在Throwable类中。而且此方法加了synchronized锁,查看堆栈的信息。那么必然会影响性能。
底层实现是native,调用C语言的方法。
3.解决方法
①.编写自定义异常
// 此处为lombok注解 @Getter @AllArgsConstructor public 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自定义异常类以及全局log打印
- java 核心内容(17) 自定义异常
- Java异常学习之自定义异常详解
- 如何打印Java异常的完整堆栈内容
- 将Java异常的完整堆栈内容打印到log4j日志
- 通俗易懂详解java的异常处理及自定义异常类型
- 自定义打印内容参数设置
- 如何判断java自定义对象内容完全相同
- Java中自定义异常
- java异常的详解
- 问题:MyEclipse 安装后执行一个java项目,出现下面的异常;应检查哪些内容?
- java语言自定义异常
- Java中的自定义异常
- JAVA中打印出异常信息
- java例程练习(自定义异常处理)
- Java study 09day--自定义异常