SpringMVC的异常处理
一、异常处理思路
Controller调用service,service调用dao,异常都是向上抛出的,最终由DispatcherServlet找异常处理器进行异常的处理。
二、SpringMVC的异常处理
第一步、编写自定义异常处理类(做提示信息的)。
第二步、编写异常处理器。
第三步、配置异常处理器(跳转到提示页面)。
首页jsp代码index.jsp
<h3>异常处理</h3>
<a href="user/testException">异常处理</a>
控制器代码块.java
package cn.itcast.controller;
import cn.itcast.exception.SYsException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/testException")
public String testException()throws SYsException {
System.out.println("方法执行了");
try {
//模拟一个异常
int a=10/0;
} catch (Exception e) {
//打印异常信息
e.printStackTrace();
//抛出自定义异常信息
throw new SYsException("查询用户信息出现文错误");
}
return "success";
}
}
注意: 要讲异常捕获到,然后要抛出的为我们自定的异常类。
自定义异常类SYsException.java
package cn.itcast.exception;
import org.springframework.stereotype.Controller;
/*
* 自定义异常类
* */
public class SYsException extends Exception{
private String message;
public SYsException(String message) {
this.message=message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
异常处理器SYsExceptionResolver.java
package cn.itcast.exception;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* 异常处理器对象
* */
public class SYsExceptionResolver implements HandlerExceptionResolver {
/*
* 处理异常业务逻辑
* */
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {
System.out.println("异常处理器");
SYsException e=null;
if(ex instanceof SYsException){
e=(SYsException)ex;
}else{
e=new SYsException("系统维护中。。。");
}
ModelAndView mv=new ModelAndView();
mv.addObject("errorMsg",e.getMessage());
mv.setViewName("error");
return mv;
}
}
这里应为要实现HandlerExceptionResolver类并且集成其中的方法,返回的类型是ModelAndView的类型。
前端控制器配置:Springmvc.xml
<!--配置异常处理器-->
<bean id="sysExceptionResolver" class="cn.itcast.exception.SYsExceptionResolver"/>