springmvc异常处理
异常处理图解
springmvc提供了全局异常处理器(一个系统只能有一个全局异常处理器)
springmvc全局异常处理
1.编辑自定义异常类
package com.xieli.liu.exception;
/**
* Created by Administrator on 2019-12-05.
*/
public class UserException extends Exception {
private String message;
public UserException(String message) {
super(message);
this.message = message;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2.编写全局异常处理类
package com.xieli.liu.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by Administrator on 2019-12-05.
*/
public class UserExceptionResolver implements HandlerExceptionResolver {
//e就是系统所抛出的异常
//o就是handle
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
UserException userException;
//判断是否是自定义异常
if(e instanceof UserException){
userException=(UserException) e;
}else {
//如果不是自定义异常,很有可能是运行时异常
userException=new UserException("未知异常");
}
String message = userException.getMessage();
//将异常信息返回到异常页面
return new ModelAndView("system/error").addObject("message",message);
}
}
3.异常页面error.jsp
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019-12-05
Time: 15:44
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>异常页面</title>
</head>
<body>
${message}
</body>
</html>
4.在springmvc配置中添加全局异常处理器
<!--全局异常处理器
只要实现HandlerExceptionResolver接口就是全局异常处理器-->
<bean class="com.xieli.liu.exception.UserExceptionResolver"/>
5.测试
1.调用自定义异常
@RequestMapping("/findSaveUser")
public ModelAndView findSaveUser(ModelMap map,UserInfo userInfo) throws Exception {
List<UserInfo> userInfos = userInfoService.selectUserList(userInfo);
if(userInfos.size()==0){
throw new UserException("自定义异常:没有查询到数据");
}
ModelAndView mv = new ModelAndView("editusermasseger");
mv.addObject("user", userInfos.get(1));
return mv;
}
2.非自定义异常
@RequestMapping("/findSaveUser")
public ModelAndView findSaveUser(ModelMap map,UserInfo userInfo) throws Exception {
List<UserInfo> userInfos = userInfoService.selectUserList(userInfo);
ModelAndView mv = new ModelAndView("editusermasseger");
mv.addObject("user", userInfos.get(1));
return mv;
}