当前位置: 移动技术网 > IT编程>开发语言>Java > springboot学习----6.错误处理机制

springboot学习----6.错误处理机制

2020年07月28日  | 移动技术网IT编程  | 我要评论

错误处理机制springboot错误消息处理机制:

电脑当访问路径不存在不存在页面默认返回一个错误页面(接收请求:text/html)
而其他客户端(android,ios等等),返回一个json字符串(接收请求:/)
如何定制错误响应:
1.如何定制错误页面
2.如何定制错误json数据
ErrorMvcAutoConfiguration给容器中添加了以下组件:
1.DefaultErrorAttributes:帮我们在页面共享信息
2.BasicErrorController:处理默认的/error请求
3.ErrorPageCustomizer
4.DefaultErrorViewResolver:解析得到决定去哪个页面
步骤:一旦系统出现4xx或5xx,ErrorPageCustomizer就会生效,定制错误的响应规则
系统出现错误后交由BasicErrorController处理error请求,

定制错误页面

1.有模板引擎的情况下:error/状态码,将错误页面命名为错误状态吗.html放在
模板引擎文件夹下的error文件夹下,发生此状态的错误就会去这个页面
我们可以使用4xx和5xx作为错误页面的文件名来匹配这种类型的错误页面,优先精确匹配
页面能获取的信息:
timestamp:时间戳
status:状态码
error:错误提示
exception:异常对象
message:异常消息
errors:JSR303数据校验错误提示
但是如果没有模板引擎(模板引擎找不到),就会在静态资源文件夹下找,没有模板引擎解析,也就没有功能支持

<main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">
	<h1>状态码:[[${status}]]</h1>
	<h1 th:text="${#dates.format(timestamp,'yyyy-MM-dd')}"></h1>
	<h1>异常信息:[[${message}]]</h1>
	<h1>错误提示:[[${error}]]</h1>
</main>
@ControllerAdvice
public class MyExceptionHandler {

    @ExceptionHandler(value = MyException.class)
    public String handleException(HttpServletRequest request){
        Map<String,Object> map = new HashMap<>();
        request.setAttribute("javax.servlet.error.status_code",520); //定制响应状态码,才会来到我们的5xx,4xx页面
        map.put("message","出错了");
        map.put("exception",new MyException());
        request.setAttribute("extension",map);
        return "forward:/error";
    }
}

添加自定义字段和消息:

@Component
public class MyErrorAttributes extends DefaultErrorAttributes {
    @Override
    public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {
        Map<String, Object> map = super.getErrorAttributes(webRequest, options);
        map.put("admin","yxy"); //添加自定义字段
        map.put("extension",webRequest.getAttribute("extension", WebRequest.SCOPE_REQUEST));//添加异常处理器传递过来的信息
        return map;
    }
}


在这里插入图片描述
可以发现是能够正常收到自定义的字段信息的.

本文地址:https://blog.csdn.net/weixin_44246189/article/details/107579338

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网