SpringMVC的异常处理
2020-04-07 本文已影响0人
阿杰_96c5
1 异常处理思路
Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进行异常的处理。
2 SpringMVC的异常处理
2.1 自定义异常类
/**
* 自定义异常类
*/
public class SysException extends RuntimeException {
/**
* 存储提示信息
*/
private String message;
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public SysException(String message) {
this.message = message;
}
}
2.2 自定义异常处理器
public class SysExceptionResolver implements HandlerExceptionResolver {
/**
* 处理异常业务逻辑
* @param request
* @param response
* @param handler
* @param ex
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 获取异常对象
SysException e = null;
if(ex instanceof SysException){
e = (SysException)ex;
}else{
e = new SysException("系统正在维护...");
}
// 创建ModelAndView对象
ModelAndView mv = new ModelAndView();
mv.addObject("errorMsg",e.getMessage());
mv.setViewName("error");
return mv;
}
}
2.3 springmvc.xml配置异常处理器
<!-- 配置异常处理器 -->
<bean id="sysExceptionResolver" class="org.example.exception.SysExceptionResolver"/>
2.4 测试代码
/**
* 测试异常处理
* @return
*/
@RequestMapping("/testException")
public String testException(){
System.out.println("testException执行了......");
try {
// 模拟异常
int a = 10/0;
} catch (Exception e) {
// 打印异常信息
e.printStackTrace();
// 抛出自定义异常信息
throw new SysException("查询所有用户出现错误....");
}
return "success";
}