SpringBoot错误处理机制

  1. SpringBoot在AutoConfigure的web/servlet/error中自动定义了错误页面,SpringBoot会自动到模板目录和资源目录下查找有没有和状态码同名的视图或静态资源,如果有就自动加载,如果没有就使用SpringBoot默认的错误页面。
  2. 当系统出错时SpringBoot自动会请求/error请求,可以通过server.error.path属性修改错误请求路径
  3. 我们可以在模板或资源路径下定义一个error目录,将我们自定义的错误状态码同名的页面放入此目录中,SpringBoot就可以自动加载我们自定义的错误页面。

比如服务器有个404错误,SpringBoot会已一下顺序查找错误页面

  1. SpringBoot会自动查找templates/error/404.ftl,如果没有继续往下查找。
  2. SpringBoot 会自动查找static/error/404.html,如果没有继续往下查找。
  3. StringBoot会自动查找templates/error/4xx.ftl(模糊查找),如果没有继续往下查找。
  4. SpringBoot会自动查找static/error/4xx.html(模糊查找),如果没有SpringBoot会返回默认的错误页面。

注意:如果配置了模板引擎,SpringBoot会先去查找模板里面的错误页面,否则不会查找模板路径下的错误页面。

在模板错误页面中可以直接获取一下错误信息:

  1. timestamp:时间戳
  2. status:状态码
  3. error:错误提示
  4. exception:异常对象
  5. message:异常信息
  6. errors:JSR303数据校验出现的错误

如果要自定义返回错误信息,可以继承ErrorAttributes接口或者DefaultErrorAttributes类,然后将自定义的类加入容器中

package com.example.springboot.error;

import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.WebRequest;

import java.util.Map;

/**
 * 自定义添加错误信息
 */
@Component
public class MyErrorAttributes extends DefaultErrorAttributes {
    @Override
    public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
        Map<String, Object> errorAttributes = super.getErrorAttributes(webRequest, includeStackTrace);
        //自定义错误信息
        errorAttributes.put("projectName", "Hello Word");
        return errorAttributes;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值