SpringBoot错误处理机制

一、SpringBoot默认的错误处理机制

1、默认效果:

1)浏览器,返回一个默认的错误页面

在这里插入图片描述
浏览器发送请求的请求头:
在这里插入图片描述

2)如果是其他客户端,默认响应一个json数据

在这里插入图片描述
在这里插入图片描述

2、原理

可以参照ErrorMcvAutoConfiguration;错误处理的自动配置;
给容器中添加了一下组件

1)DefaultErrorAttributes:

在这里插入图片描述

2)BasicErrorController:处理默认/error请求

在这里插入图片描述

3)ErrorPageCustomizer:

在这里插入图片描述

4)DefaultErrorViewResolver:

在这里插入图片描述

3、步骤:

一旦系统出现4xx或者5xx之类的错误;ErrorPageCustomizer就会生效(定制错误的响应规则);就会来到/error请求;就会被BasicErrorController处理;

1)响应页面;去哪个页面是由DefaErrorViewResolver解析得到的;

在这里插入图片描述

二、如何定制错误响应;

1、如何定制错误的页面

1)有模板引擎的情况下;erro/状态码;

【将错误页面命名为错误状态码.html放在模板引擎文件夹里面的error文件夹下】,发生此状态码的错误就会来到对应的页面;
我们可以使用4xx和5xx作为错误页面的文件名来匹配这种类型的所有错误,精确优先(优先寻找精确的状态码.html);
页面能获取的信息;
timestamp:时间戳
status:状态码
error:错误提示
exception:异常消息
errors:JSR303数据校验的错误都在这里

2)没有模板引擎(模板引擎找不到这个错误页面),静态资源文件夹下找;

3)以上都没有错误页面,就是默认来到SpringBoot默认的错误提示页面;

2、如何定制错误的json数据

1)自定义异常处理&返回定制json数据;

在这里插入图片描述

2)转发到/error进行自适应响应效果处理

在这里插入图片描述

3)将我们的定制数据携带出去;

出现错误以后,会来到/error请求,会被BasicErrorController处理,响应出去可以获取的数据是由getErrorAttributes得到的(是AbstractErrorController(ErrorController)规定的方法);
1、完全来编写一个ErrorController的实现类【或者是编写AbStractErrorController的子类】,放在容器中;
2、页面上能用的数据,或者是json返回能用的数据都是通过errorAttributes.getErrorAttributes得到;
容器中DefaultErrorAttributes.getErrorAttributes();默认进行数据处理的;
自定义ErrorAttributes
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值