image-20210727092720158

  1. 首先 在请求的目标方法处理出现异常的时候 都会被catch 并且标志当前请求结束

    并且用dispatchexception

  2. 进入错误视图的解析流程(页面的渲染)

    processDispatchResult方法 参数有mv 和 dispatchException

  3. mv = processHandler Exception;处理handler发生的异常,处理完成后返回模型视图

  4. 在执行请求的异常处理时 会依次遍历系统默认的视图解析器

  5. iShot2021-07-27 09.01.07

  6. 如果所有默认的异常处理解析器都不能解析这个异常 那么tomcat底层会重新发出一个/error请求

    遍历所有的ErrorViewResolve谁能解析出ModelAndView对象 就使用谁

    而BasicErrorController中有一个解析错误视图的组件为defaultErrorView

iShot2021-07-27 08.43.22

几种自定义异常

image-20210727110329574

  1. 定义全局异常处理器

    @ControllerAdvice + @ExceptionHandler

    原理:在请求的方法中发生错误时 会catch掉当前请求 并且执行异常处理

    会遍历系统中的异常处理器 进行异常解析 其中就有一个ExceptionHandlerExceptionResolver

    进行执行(我们自定义的方法) 最终返回一个ModelAndView对象

    image-20210727101805393

  2. @ResponseStatus自定义异常

  3. spring的底层异常

  4. 自定义HandlExceptionResolver定义异常 「@Order改变异常解析器的权重」

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐