handlerexceptionhandler使用resolver 可以处理哪些

springmvc处理异常的4种方式 -
- ITeye技术网站
博客分类:
springmvc处理异常有三种方式:
1.在一个controller中定义一个方法,用@ExceptionHandler注解标注。(优先级最高)
@ExceptionHandler
public ModelAndView handleException(Exception exception){
ModelAndView mv = new ModelAndView("error/500");
mv.addObject("ex",exception);
}
或者
@ExceptionHandler
public String handleException(Exception exception){
return "error/500";
}
2.全局异常设置(优先级次之)
&!-- 将Controller抛出的异常转到特定View,异常映射处理器 --&
&bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"&
&!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception --&
&!--&property name="exceptionAttribute" value="ex"&&/property&--&
&property name="exceptionMappings"&
&prop key="java.lang.Throwable"&error/500&/prop&
&/property&
&/bean&
3.自定义异常处理(优先级次之)
public class CustomerHandlerExceptionResolver extends AbstractHandlerExceptionResolver{
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
System.out.println("自定义异常处理器");
logger = LoggerFactory.getLogger(ex.getClass());
ResponseStatus responseStatus = AnnotationUtils.getAnnotation(ex.getClass(),
ResponseStatus.class);
ModelAndView modelAndView = new ModelAndView("error/500");
//自定义的异常
if (responseStatus != null) {
modelAndView.setViewName("error/" + responseStatus.value().value());
//其他异常,做一些其他的处理,如发送错误报警邮件,记录日志
logger.error(ex.getMessage(), ex);
return modelAndV
}
4.自定义一个异常类,继承RunTimeException(优先级最低)
@ResponseStatus(value = HttpStatus.NOT_FOUND,reason = "No such resource")
public class NotFoundException extends RuntimeException {
}
当抛出我们自定义的异常时,就会构造出相应的状态码,一般我们还是设置SimpleMappingExceptionResolver,来进行统一跳转到错误页面。
最佳实践:还是用全局的SimpleMappingExceptionResolver最好,在jsp里面写日志,当需要进行细粒度的控制时,还是自定义异常解析器为好,其他的自我感觉不好用!如有不正确的,欢迎指正!
ZXY_920823
浏览: 6015 次
wangwen135 写道感谢“ 由于M2e不支持这个goal ...
感谢“ 由于M2e不支持这个goal,会报错”ExceptionResolverCustom 这个是自定义的异常处理器类.
在springmvc中注册
在web.xml文件中屏蔽springmvc自动注册的异常处理器
网上的资料就是这么配置的,可自己配置的异常处理器就是不起作用
看下springmvc是如何加载自定义的异常处理器的
可以看到,springmvc从容器中取自定义异常处理器时是通过指定的id去取的,
所以说在springmvc中配置自定义处理器的时候id注意下不要写错,这个id是 handlerExceptionResolver
记下笔记,防止再犯。
阅读(...) 评论()

我要回帖

更多关于 exceptionhandler注解 的文章

 

随机推荐