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

 更新时间:2019年10月28日 15:21:17   作者:LitongZero  
这篇文章主要为大家详细介绍了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;
  }

③.打印内容

可以看到,打印内容明显变少

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring Boot 通过注解实现数据校验的方法

    Spring Boot 通过注解实现数据校验的方法

    这篇文章主要介绍了Spring Boot 通过注解实现数据校验的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 详解Springboot分布式限流实践

    详解Springboot分布式限流实践

    这篇文章主要介绍了详解Springboot分布式限流实践 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • java使用RestTemplate封装post请求方式

    java使用RestTemplate封装post请求方式

    这篇文章主要介绍了java使用RestTemplate封装post请求方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • springboot如何通过注解实现多线程

    springboot如何通过注解实现多线程

    在Spring Boot中实现异步方法时,如果直接在调用类中使用`@Async`注解,可能会导致异步失败,正确的做法是将实现异步的方法放在一个独立的类中,并通过Spring生成的bean来调用这个方法,这样可以成功实现异步
    2024-12-12
  • 使用Java Collections实现集合排序的全面指南

    使用Java Collections实现集合排序的全面指南

    在Java编程中,集合(Collection)是处理数据的重要工具之一,Java集合框架提供了丰富的接口和类来操作数据集合,而排序是其中最常见的操作之一,本文将详细介绍如何使用Collections类对集合进行排序,并深入探讨其背后的原理和使用场景,需要的朋友可以参考下
    2025-02-02
  • 详解JUC 常用4大并发工具类

    详解JUC 常用4大并发工具类

    这篇文章主要介绍了JUC 常用4大并发工具类的相关资料,帮助大家更好的理解和学习Java 并发编程,感兴趣的朋友可以了解下
    2020-10-10
  • SpringBoot bean的多种加载方式示例详解

    SpringBoot bean的多种加载方式示例详解

    本文详细介绍了在SpringBoot中加载Bean的多种方式,包括通过xml配置文件、注解定义、特殊方式如FactoryBean、@ImportResource、ApplicationContext以及使用@Import注解导入bean的方法,感兴趣的朋友跟随小编一起看看吧
    2024-10-10
  • 详解Java如何优雅的调用dubbo同时不使用其它jar包

    详解Java如何优雅的调用dubbo同时不使用其它jar包

    这篇文章主要介绍了如何在不使用他人jar包的情况下优雅的进行dubbo调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • mybatis项目CRUD步骤实例详解

    mybatis项目CRUD步骤实例详解

    这篇文章主要介绍了mybatis项目CRUD步骤,包括pom.xml引入相应的依赖,在resources目录下写配置文件,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • servlet3文件上传操作

    servlet3文件上传操作

    这篇文章主要介绍了servlet3文件上传操作的相关资料,需要的朋友可以参考下
    2017-11-11

最新评论