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

猜你喜欢

转载自blog.csdn.net/qq_47431361/article/details/123889560