java中如何自定义异常打印内容-创新互联

这篇文章给大家介绍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;  }

③.打印内容

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

关于java中如何自定义异常打印内容就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

分享题目:java中如何自定义异常打印内容-创新互联
文章URL:https://www.cdcxhl.com/article22/dsojcc.html

成都网站建设公司_创新互联,为您提供静态网站定制开发网站设计公司网站排名品牌网站设计小程序开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司