SpringMVC异常处理

系统中异常包括两类:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生

系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理

springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。

img

自定义异常处理器

package com.jwang.handler;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 包名:com.jwang.handler
* @author Leevi
* 日期2020-11-15 10:17
* 全局异常处理器:
* 作用: 处理整个项目中所有的controller抛出的异常
* 步骤: 1. 编写一个类实现HandlerExceptionResolver接口
* 2. 重写resolveException方法
* 3. 在springmvc的配置文件中,配置异常解析器
*/
public class GlobalExceptionHandler implements HandlerExceptionResolver {

@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//ex表示这次的异常信息,使用它可以收集异常信息
ex.printStackTrace();//这句代码仅仅是在控制台打印文件

//返回ModelAndView对象就必然要走视图解析器
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");
return modelAndView;
}
}

配置异常处理器

  • 在springmvc.xml配置
<bean id="sysExceptionResolver" class="com.jwang.handler.GlobalExceptionHandler"></bean>