千家信息网

springBoot中怎么自定义异常响应

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章将为大家详细讲解有关springBoot中怎么自定义异常响应,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 自定义异常返回json数据、//
千家信息网最后更新 2025年02月02日springBoot中怎么自定义异常响应

这篇文章将为大家详细讲解有关springBoot中怎么自定义异常响应,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1 自定义异常返回json数据、

//不要忘记添加 @ControllerAdvice

@ControllerAdvice

public class myExceptionHandler {

//浏览器和客户端返回的都是json// @ResponseBody

@ExceptionHandler(UserNotExist.class)

public Map handlerException(Exception e){   Map map = new HashMap<>();      map.put("code","user.notexist");      map.put("message",e.getMessage());      return map;

} }

2 转发到/error下,进行自适应响应 @ControllerAdvice public class myExceptionHandler {

//浏览器和客户端返回的都是json@ExceptionHandler(UserNotExist.class)public String handlerException(Exception e, HttpServletRequest request){    Map map = new HashMap<>();            request.setAttribute("javax.servlet.error.status_code",500);            map.put("code","user.notexist");            map.put("message",e.getMessage());            request.setAttribute("ext",map);            return "forward:/error";        }

}

3 将定制的错误携带出去 @Component

public class myErrorAtrributes extends DefaultErrorAttributes {

//WebRequest webRequest,注意1.x.x版本的写法与2.1.0写法不同,我的是2.1.0public Map getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {    Map errorAttributes = super.getErrorAttributes(webRequest,includeStackTrace);            errorAttributes.put("com", "maodong");            Map ext= (Map) webRequest.getAttribute("ext",0);            errorAttributes.put("ext",ext);            return errorAttributes;        }

}

//为啥这么写:父类DefaultErrorAttributes类中的方法

public Map getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {

    Map errorAttributes = new LinkedHashMap();            errorAttributes.put("timestamp", new Date());            this.addStatus(errorAttributes, webRequest);            this.addErrorDetails(errorAttributes, webRequest, includeStackTrace);            this.addPath(errorAttributes, webRequest);            return errorAttributes;}//为啥WebRequest webRequest能得到与低版本RequestAttrributes相同的结果public interface WebRequest extends RequestAttributes {@NullableString getHeader(String var1);@NullableString[] getHeaderValues(String var1);Iterator getHeaderNames();------}//为啥  Map ext= (Map) webRequest.getAttribute("ext",0);能获得extpublic interface RequestAttributes {int SCOPE_REQUEST = 0;int SCOPE_SESSION = 1;String REFERENCE_REQUEST = "request";String REFERENCE_SESSION = "session";@NullableObject getAttribute(String var1, int var2);void setAttribute(String var1, Object var2, int var3);void removeAttribute(String var1, int var2);

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

0