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

作者:LitongZero 时间:2022-03-10 23:58:32 

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

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

1.自定义异常打印内容

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

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

2.查看源码

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

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

可以看到,此方法的父类实现,是在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自定义异常打印内容详解

来源:https://blog.csdn.net/LitongZero/article/details/102767740

标签:java,异常,打印内容
0
投稿

猜你喜欢

  • Spring @Conditional通过条件控制bean注册过程

    2023-08-06 10:00:11
  • 使用mybatis插件PageHelper实现分页效果

    2023-03-29 15:12:03
  • Spring boot @RequestBody数据传递过程详解

    2022-09-14 12:23:37
  • c# 给pdf添加数字签名的步骤

    2022-04-05 17:58:01
  • 详解Spring Data JPA使用@Query注解(Using @Query)

    2023-11-29 14:49:34
  • java实现在原有日期时间上加几个月或几天

    2023-08-06 16:39:48
  • Spring Cloud Ribbon配置详解

    2023-11-25 01:32:50
  • JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现

    2023-09-17 17:03:59
  • 解决Java & Idea启动tomcat的中文乱码问题

    2022-05-31 05:48:35
  • Android解决所有双击优化的问题

    2023-07-27 09:07:03
  • java使用websocket,并且获取HttpSession 源码分析(推荐)

    2023-08-04 17:38:05
  • Java数据结构之稀疏数组的实现与应用

    2023-12-04 22:46:41
  • springAop实现权限管理数据校验操作日志的场景分析

    2023-11-23 10:00:27
  • java实现简单登录界面的实战过程

    2022-02-07 20:19:51
  • JAVA递归生成树形菜单的实现过程

    2023-07-15 08:57:22
  • SpringBoot 嵌入式web容器的启动原理详解

    2021-12-29 23:23:14
  • Intellij Idea 多模块Maven工程中模块之间无法相互引用问题

    2023-11-11 07:24:51
  • 浅析Java的Hibernate框架中的继承关系设计

    2021-10-18 03:10:03
  • JAVA中的字符串常量池使用操作代码

    2021-11-24 02:00:57
  • SpringBoot如何集成PageHelper分页功能

    2022-10-22 03:18:34
  • asp之家 软件编程 m.aspxhome.com