跳到主要内容

Spring MVC系列(12)-异常处理流程源码分析

前言

首先写一个接口,会抛出算术异常ArithmeticException。

    @GetMapping("/testException")
@ResponseBody
public String testException() {


int i= 4/0;
return "testException";
}

浏览器访问,发现返回了一个页面,但是是说500异常,找不到/error访问路径。
 
使用PostMan访问,发现返回了Json数据。
 
那么Spring MVC中时如何进行异常处理的呢?

核心类简介

spring-framework

spring原生框架提供了核心的异常处理机制。

HandlerExceptionResolver

HandlerExceptionResolver接口,控制器异常解析器,对处理映射器或执行期间抛出的异常进行解析处理。

其定义了一个解析异常方法,尝试解决执行期间抛出的给定异常,返回一个ModelAndView对象,然后可以通过ModelAndView 返回异常页面。

public interface HandlerExceptionResolver {


ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);
}

在spring-framework中,HandlerExceptionResolver有这些实现类。