七、springmvc之异常处理
1.概述
1.自定义了一个异常
继承Exception
2.定义异常处理器
1)实现:HandlerExceptionResolver
2)实现抽象方法:resolveException
* 返回值ModelAnView
i: 异常信息 (model)
ii:公共的错误页面 (view)
3.配置异常处理器
将自定义的异常处理器交给spring容器管理
4)异常处理原则
* 在service,dao向上抛出异常
* 在web层捕获异常,抛出自定义的异常信息
2简单的自定义异常
public class MyException extends Exception{
private String message;
/**
* 抛出该自定义异常,必须写名提示信息
*/
public String getMessage() {
return message;
}
public MyException(String message) {
this.message = message;
}
}
3自定义异常处理器
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
* 自定义的异常解析器
* * 实现HandlerExceptionResolver接口
* * 实现方法 resolveException
* 参数: request:
* response
* ex
* * 处理异常信息,
*
* * 配置异常处理器生效
*
*/
public class customExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
ModelAndView mv = new ModelAndView();
if (ex instanceof MyException) {
mv.addObject("msgs", ex.getMessage());
mv.setViewName("forward:/error.jsp");
}else {
mv.addObject("msgs", "发生异常了");
mv.setViewName("forward:/error.jsp");
ex.printStackTrace();
}
return mv;
}
}
4配置异常处理器
<!-- 配置异常解析器 -->
<bean id="exceptionHandler" class="cn.it.demo.exception.customExceptionHandler"></bean>