自定义错误页
-
- error/404.html error/5xx.html;有精确的错误状态码页面就匹配精确,没有就找 4xx.html;如果都没有就触发白页
文章图片
- error/404.html error/5xx.html;有精确的错误状态码页面就匹配精确,没有就找 4xx.html;如果都没有就触发白页
@ControllerAdvice+@ExceptionHandler处理全局异常
:底层是 ExceptionHandlerExceptionResolver 支持处理的
@ResponseStatus+自定义异常
:底层是 ResponseStatusExceptionResolver支持处理的 ,把responsestatus注解的信息拿来,然后底层调用 response.sendError(statusCode, resolvedReason);这个sendError方法相当于直接告诉tomcat给我发/error请求,请求的错误信息是statusCode,原因是resolvedReason
这个/error其实就是映射到‘默认没有任何人能处理异常,如果没有任何人能处理最终底层就会发送 /error 请求。会被底层的BasicErrorController处理’这个流程。
Spring底层的异常,如 参数类型转换异常
:DefaultHandlerExceptionResolver 处理spring框架底层的异常。
-
- response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage());
文章图片
- response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage());
自定义异常解析器
:实现 HandlerExceptionResolver 处理异常;可以把优先级调高,让他作为默认的全局异常处理规则。发生任何异常都是他来处理。
@Order(value = https://www.it610.com/article/Ordered.HIGHEST_PRECEDENCE)//优先级,数字越小优先级越高 @Component public class CustomerHandlerExceptionResolver implements HandlerExceptionResolver {@Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { try { response.sendError(505,"我喜欢的异常"); }catch (IOException e){ e.printStackTrace(); } return newModelAndView(); } }
默认级别以及最高和最低级别:
文章图片
文章图片
文章图片
ErrorViewResolver 实现自定义处理异常
;(这个一般不去自定义)
-
- 【3、定制错误处理逻辑】tomcat只要一感知到使用response.sendError跳转页面 。/error请求就会转给controller
- 转给controller的方式有两个:
- 第一个是明显的调用sendError;
- 第二个是你的异常没有任何人能处理(异常解析器返回的ModelAndView为null)。tomcat底层 response.sendError。error请求就会转给controller
- basicErrorController 要去的页面地址是 ErrorViewResolver 解析 ;
- 最终只要没人能解析异常,都会被basicErrorController 捕获。
- 【3、定制错误处理逻辑】tomcat只要一感知到使用response.sendError跳转页面 。/error请求就会转给controller
推荐阅读
- android|HashMap归纳(一)
- java|从2.7.0-2.7.5版本,Dubbo调用链路是如何提升30%性能的
- 数据库|昨晚,我们的消费者居然停止消费kafka集群数据了
- springCloud|SpringCloud——Ribbon详解+例子
- 消息队列|MQ的分类与选型
- SpringCloud|RestTemplate 用法详解
- 常见报错|Parameter ‘contractState‘ not found. Available parameters are [request, page, param1, param2]
- kafka|kafka之消息消费者基本知识
- Maven|微服务项目(maven父子级项目)怎么打包