一、引言
第一次听说异常处理器这个东西,感觉好神奇高大上,可以一接触就感觉这不就是普通的exception处理么==一切名词都是纸老虎,下面来讲讲异常处理了,就是不能怂==
二、原理
总体说下,异常处理器的功能就是为了当出现运行时异常的时候,重新跳转到另外一个页面报个错,主要是为了前后端一起的情况,如果使用前后端分离的开发,这个真心不太实用,不太实用,不太实用,重要的事情说三遍==
异常处理器处于框架的位置就是这个地方,每当dao、service、controller层有异常抛出的时候,都会向上抛到dispatcherservlet,最后给exceptionresolver处理。
三、代码时间
1、首先自定义一个异常类CustomException
package com.xcy.exception;
public class CustomException extends Exception {
private String message;
public CustomException (String message) {
this.message=message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2、创建全局异常处理器类CustomExceptionResolver,实现接口HandlerExceptionResolver的方法resolveException
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
public class CustomExceptionResolver implements HandlerExceptionResolver{
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
// 解析出异常类型
// 如果该 异常类型是系统 自定义的异常,直接取出异常信息,在错误页面展示
// 如果该 异常类型不是系统 自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)
CustomException customerException=null;
if(ex instanceof CustomException){
customerException=(CustomException)ex;
}else{
customerException=new CustomException(ex.getMessage());
}
String message = customerException.getMessage();
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("message", message);
modelAndView.setViewName("error");
return modelAndView;
}
}
我这样写的目的是当系统异常报出的时候就在错误页面显示系统自带异常信息,当自己new CustomException(“自定义异常”)的时候就在错误界面显示 自定义异常==
3、配置springmvc.xml,让异常达到dispatcherservlet的时候让上面的全局异常处理器起作用
在里面随便地方加上就可以
<!-- 全局异常处理 -->
<bean class="com.xcy.exception.CustomExceptionResolver"></bean>
四、总结
- springMVC异常处理器原理与作用;
- springMVC异常处理器配置;