文章目录
处理错误的页面应该放哪
默认规则:
-
默认情况下,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
。