方式一:实现HandlerExceptionResolver,可以对异常进行统一处理
例如:
package cn.exception;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
* springmvc实现HandlerExceptionResolver接口统一处理异常
* @author lenovo
*方式一:实现HandlerExceptionResolver 这种方式在方式二就没用上,里面原因也不了解
*下面的@Component注解就是将此类交给spring来管理了,没有被处理(try{}catch(){})的异常会由这个类来统一处理。
*/
@Component
public class CommonException implements HandlerExceptionResolver{
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
ModelAndView mv = new ModelAndView();
//先设置出现异常后的默认错误页面
mv.setViewName("error1");
//ex是异常对象
mv.addObject("ex",ex);
if(ex instanceof MyException){
mv.setViewName("error1");
}else if(ex instanceof Exception){
mv.setViewName("error2");
}
return mv;
}
}
方式二:在springmvc上配置全局异常(配置文件的方式),没有被处理(try{}catch(){})的异常会由这个配置来统一处理。
<!-- Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver-全局异常配置 start -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 默认的错误信息页面-->
<property name="defaultErrorView" value=">error2"/>
<property name="exceptionMappings">
<props>
<!-- 自定义的异常类MyException error2是出现MyException异常的页面 -->
<prop key="cn.exception.MyException">error2</prop>
<!-- 空指针异常 error_spring_null是出现空指针异常的页面-->
<prop key="java.lang.NullPointerException">error_spring_null</prop>
</props>
</property>
</bean>
<!-- 全局异常配置 end -->
package cn.exception;
public class MyException extends RuntimeException {
public MyException(String string){
super(string);
}
}
方式三:自己try{}catch(){}做相应的处理。自己处理过的异常就不会被以上两种方式处理了。