java自定义异常打印内容详解
时间:2021-02-14 11:32:54|栏目:JAVA代码|点击: 次
本文实例为大家分享了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代码
下一篇:javascript checkbox全选和反选的简单实现
本文标题:java自定义异常打印内容详解
本文地址:http://www.codeinn.net/misctech/63088.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




