SpringMVC全局异常处理
作用
当控制器中某个方法在运行过程中突然发生运行时异常,为了增加用户体验对于用户不能出现类似500错误代码,应该给用户良好展示错误界面,全局异常处理就能更好解决这个问题
全局异常处理开发
自定义类 实现接口
HandlerExceptionResolver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39package com.buubiu.handlerexception;
import com.buubiu.exceptions.UserNameNotFoundException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
* 自定以全局异常类
* @author buubiu
**/
public class GlobalExceptionResolver implements HandlerExceptionResolver {
/**
* 用来处理发生异常时的方法
* @param request 当前请求对象
* @param response 当前请求对应的响应对象
* @param handler 当前请求的方法对象
* @param ex 出现异常时展示视图和数据
* @return
*/
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) {
System.out.println("进入全局异常处理器获取的异常信息为:" + ex.getMessage());
ModelAndView modelAndView = new ModelAndView();
//基于不能业务异常跳转到不同页面
if (ex instanceof UserNameNotFoundException) {
modelAndView.setViewName("redirect:/login.jsp");
} else {
modelAndView.setViewName("redirect:/error.jsp");
}
//modelandview 中 model 默认放入request作用域中,如果使用redirect跳转:model中数据会自动拼接到跳转url
modelAndView.addObject("msg", ex.getMessage());
return modelAndView;
}
}在SpringMVC配置文件中配置全局异常处理类
1
2<!--配置全局异常处理类-->
<bean class="com.buubiu.handlerexception.GlobalExceptionResolver"/>
SpringMVC全局异常处理