在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的。下面将介绍使用Spring MVC统一处理异常的解决和实现过程
- 使用Spring MVC提供的SimpleMappingExceptionResolver
- 实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器
- 使用@ExceptionHandler注解实现异常处理
Spring的异常处理:
1、局部异常:只能处理ontroller中的异常处理,@ExceptionHandler
//测试异常处理
@RequestMapping("/testExcep")
public String testExcep(String name,String pwd){
User user = userService.doLogin(name,pwd);
if (null==user){
throw new RuntimeException("异常信息:用户名或密码错误");
}
return "index";
}
//处理(捕获)异常
//@ExceptionHandler {}中可以定义多种异常类型
@ExceptionHandler(value = {RuntimeException.class})
public String handlerExcep(RuntimeException re,HttpServletRequest request){
request.setAttribute("re",re);
return "error";}
2、全局异常:对所有的异常进行统一处理,进行正在Spring中配置:SinpleMappingExceptionResoler,视图解析器
error