spring mvc 关于@ExceptionHandler 异常处理无效问题

原创 2018年04月17日 16:22:45

学springmvc时学过@ExceptionHandler ,但一直都没真正用过。

今天在用的时候弄了半个小时,就是不知道为什么总是报500错误,并没有进入@ExceptionHandler方法

下面这个是测试方法

@RequestMapping("/test")

private String Test() {
throw new NullPointerException();

}

下面这个是异常处理方法(错误的)

@ExceptionHandler(value = { EvaluationException.class })
private String handleEvaluationException(Exception e,Model model) {
model.addAttribute("errorInfo", e.getMessage());
modelAndView.setViewName("error");
return "error";

}

如果你已经看出有什么问题了,那就不用往下看了,

接下来是正确的异常处理方法

@ExceptionHandler(value = { EvaluationException.class })
private ModelAndView handleEvaluationException(Exception e) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorInfo", e.getMessage());
modelAndView.setViewName("error");
return modelAndView;

}

经过与错误的那个方法进行对比,能发现怎么回事了吗?

不论怎么,还是这边说一下吧,

@ExceptionHandler方法的参数不能有Map,Model等等,而是只能传入你设定的异常。。

如果有Map,Model等等,那么该@ExceptionHandler方法是不会处理你的异常的


如果需要传递属性给error错误页面怎么办?

好说,通过ModelAndView作为返回值进行传递属性已经视图名就行了。

唉,为什么,参数不能用Model这些呢?都习惯了RequestionMapping的那种用法了,就是因为这种习惯,我貌似浪费了一个小时才解决这个问题。

也不知道是不是因为我百度错了,关于这个错误的文章一直没找到,spring mvc官方文档也没有找到,我还是去看我当初学习spring mvc的视频才发现这个问题。



Spring MVC视频

全网第一套基于Spring4.x、涵盖所有企业开发技术点、源码级讲授的 Spring MVC视频。
  • 2015年01月26日 18:07

Spring中的@ControllerAdvice注解配合@ExceptionHandler使用实现异常处理

@ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强。让我们先看看@ControllerAdvice的实现:...
  • kollyQAQ
  • kollyQAQ
  • 2016-04-05 14:16:00
  • 8106

Spring异常处理 ExceptionHandler的使用

@ExceptionHandler注解: 当一个Controller中有方法加了@ExceptionHandler之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@Ex...
  • u010187242
  • u010187242
  • 2017-06-22 16:19:40
  • 284

springMVC原理(五):SpringMVC异常处理机制详解[附带源码分析]

重要接口和类介绍 1. HandlerExceptionResolver接口    SpringMVC异常处理核心接口。该接口定义了1个解析异常的方法: ModelAndVie...
  • mll999888
  • mll999888
  • 2017-08-27 16:52:37
  • 383

使用ExceptionHandler进行Spring mvc 异常处理

public abstract class AbstractController { protected final Logger logger = LoggerFactory.getLogge...
  • z69183787
  • z69183787
  • 2017-01-20 17:27:12
  • 958

ajax和普通请求使用spring mvc在controller中的异常统一处理

ajax和普通请求使用spring mvc在controller中的异常统一处理
  • wenfeifang
  • wenfeifang
  • 2016-12-21 16:33:21
  • 2546

Spring MVC @ExceptionHandler的使用

Spring MVC 中的@ExceptionHandler可以对web的服务器端运行错误, 做统一的处理,使得http status code 从原本的500改成200,  并去执行用@Except...
  • lsm135
  • lsm135
  • 2016-09-22 18:05:40
  • 6914

@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常

@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常...
  • kinginblue
  • kinginblue
  • 2017-04-15 20:12:35
  • 16280

springmvc学习笔记(29)——HandleException处理异常

如何使用HandleException在程序中,异常是最常见的,我们需要捕捉异常并处理它,才能保证程序不被终止。最常见的异常处理方法就是用try catch来捕捉异常。这次我们使用springmv...
  • u010837612
  • u010837612
  • 2015-04-29 19:41:19
  • 3527

springMVC源码分析--异常处理机制HandlerExceptionResolver执行原理(二)

上一篇博客springMVC源码分析--异常处理机制HandlerExceptionResolver简单示例(一)中我们简单地实现了一个异常处理实例,接下来我们要介绍一下HandlerExceptio...
  • qq924862077
  • qq924862077
  • 2016-12-17 20:27:45
  • 1977
收藏助手
不良信息举报
您举报文章:spring mvc 关于@ExceptionHandler 异常处理无效问题
举报原因:
原因补充:

(最多只允许输入30个字)