springboot十四 错误处理

处理错误的页面应该放哪

在这里插入图片描述

默认规则

  • 默认情况下,Spring Boot提供/error处理所有错误的映射

  • 机器客户端,它将生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。对于浏览器客户端,响应一个“ whitelabel”错误视图,以HTML格式呈现相同的数据

{
  "timestamp": "2020-11-22T05:53:28.416+00:00",
  "status": 404,
  "error": "Not Found",
  "message": "No message available",
  "path": "/asadada"
}
  • 要对其进行自定义,添加View解析为error

  • 要完全替换默认行为,可以实现 ErrorController并注册该类型的Bean定义,或添加ErrorAttributes类型的组件以使用现有机制但替换其内容。

  • /templates/error/下的4xx,5xx页面会被自动解析

再这个error文件夹里面放的会被自动处理成错误页面
在这里插入图片描述

改变错误处理页面的路径

我们可以再配置文件种通过
在这里插入图片描述
来修改

自定义错误跳转

使用 ExcepttionHandler注解

这里除了用String之外也可以用ModeAndView

在这里插入图片描述

这个里面写你要处理的错误的类型
在这里插入图片描述
因为我懒得搞了所有我直接整了个Exception 如果有错误都来着处理
我随便输入一个地址就跳到了我们要跳转的登陆页面了

在这里插入图片描述

使用@ResponseStatus注解

我们自定义一个异常

@ResponseStatus(value= HttpStatus.FORBIDDEN,reason="用户有点多")
//这个异常可以返回一个状态码信息 状态码信息是上面括号里面设置的  HttpStatus.FORBIDDEN 是403状态码 reason是错误的原因
public class UserTooManyException extends RuntimeException {
    public UserTooManyException() {
    }

    public UserTooManyException(String message){
    super(message);
 }
}

然后去触发这个异常
在这里插入图片描述

在这里插入图片描述
@ResponseStatus(value= HttpStatus.FORBIDDEN,reason=“用户有点多”)
这个异常可以返回一个状态码信息 状态码信息是上面括号里面设置的 HttpStatus.FORBIDDEN 是403状态码 reason是错误的原因

去自定义一个异常解析器

因为我们自定义的异常解析器优先级低 所有我们可以用@Order来提升我们的优先级
在这里插入图片描述
我们把优先级提到最高了 现在所有的异常都会用这个异常处理
在这里插入图片描述

ErrorViewResolver 实现自定义异常

ErrorViewResolver 实现自定义处理异常

  • response.sendError(),error请求就会转给controller。
  • 你的异常没有任何人能处理,tomcat底层调用response.sendError(),error请求就会转给controller。
  • basicErrorController 要去的页面地址是 ErrorViewResolver
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值