Spring Boot 异常处理静止trace

Posted --- 锅老官扎起哦!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 异常处理静止trace相关的知识,希望对你有一定的参考价值。

概述

在spring boot 2.2 中 默认状态为status 999

    private void addStatus(Map<String, Object> errorAttributes, RequestAttributes requestAttributes) {
        Integer status = (Integer)this.getAttribute(requestAttributes, "javax.servlet.error.status_code");
        if (status == null) {
            errorAttributes.put("status", 999);
            errorAttributes.put("error", "None");
        } else {
            errorAttributes.put("status", status);

            try {
                errorAttributes.put("error", HttpStatus.valueOf(status).getReasonPhrase());
            } catch (Exception var5) {
                errorAttributes.put("error", "Http Status " + status);
            }

        }
    }

如果我们自定义异常信息, 默认会打印一串trace信息,但是我们不需要

 

 

 解决办法:

 

 

@Component
public class AppErrorAttribute extends DefaultErrorAttributes {
    @Override
    public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
        Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace); // 这里参数可以配置为false
        map.put("url","www.blogdgw.com");
        map.put("ext",webRequest.getAttribute("ext",0));
        // 禁止trace 覆盖 
        //map.put("trace","");
        return map;
    }
}

 

以上是关于Spring Boot 异常处理静止trace的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 异常自定义处理 - 意外的 HTTP 状态

Spring Boot? 统一异常处理

如何使用 Spring Boot 对 WebFlux 进行异常处理?

Spring Boot 服务间通信异常处理

spring boot 覆盖默认的 REST 异常处理程序

spring boot 覆盖默认的 REST 异常处理程序