当前位置: 首页 > 知识库问答 >
问题:

如何找出@ExceptionHandler不起作用的原因?

柴琦
2023-03-14

在我的项目中,当我在控制器中添加异常处理程序方法时,它不起作用。但是如果我将此代码移到具有相同Spring版本的演示项目中,missingParamterHandler方法可以很好地工作。有人能帮我处理这个问题吗?

@Controller
@RequestMapping("/order")
public class OrderControlle{

    @ExceptionHandler(Exception.class)
    public @ResponseBody ClientResult missingParamterHandler(Exception exception) {
    /*inspect and exception and obtain meaningful message*/
    ClientResult clientResult = new ClientResult();
    clientResult.getBstatus().setCode(BstatusCode.PARAM_ERR);
    return clientResult; 
    }
}
private void initHandlerExceptionResolvers(ApplicationContext context) {
    this.handlerExceptionResolvers = null;

    if (this.detectAllHandlerExceptionResolvers) {
        // Find all HandlerExceptionResolvers in the ApplicationContext, including ancestor contexts.
        Map<String, HandlerExceptionResolver> matchingBeans = BeanFactoryUtils
                .beansOfTypeIncludingAncestors(context, HandlerExceptionResolver.class, true, false);
        if (!matchingBeans.isEmpty()) {
            this.handlerExceptionResolvers = new ArrayList<HandlerExceptionResolver>(matchingBeans.values());
            // We keep HandlerExceptionResolvers in sorted order.
            OrderComparator.sort(this.handlerExceptionResolvers);
        }
    }
    .....

共有1个答案

南门新知
2023-03-14

显式地将 <bean class="“org.springframework.web.servlet.mvc.method.annotation.exceptionHandlerExceptionResolver”/"> 添加到app-context.xml中,解决了我的问题。

如果没有上面这一行,spring在我的项目中添加了如下所示的ExceptionResolvers。

org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
 类似资料:
  • 我使用maven的Tomcat7插件来运行和调试应用程序,所以当我调试时,我可以看到@ExceptionHandler正在触发和执行return语句。但是我得到的不是JSON而是HTTP 500错误: 如果我返回一个视图或ModelView正在工作,但每当我试图返回ResponseBody或ResponseEntity时,我仍然会得到相同的错误。 最后,如果我不使用tomcat,而是使用Sprin

  • 问题内容: 我正在尝试将Google App Engine与Maven一起用于基于Spring的简单应用程序。我发现有一种适用于这种Web应用程序的Maven原型(没有Spring,但是我可以自己添加):Maven GAE。 因此,我使用了以下命令: 但是,当我尝试使用“ mvn gae:run”时,它不起作用,而且我不知道如何解决此缺失的要求: 可以补充一点,我尝试使用不同版本的maven-ga

  • 大家好,我正在与RN一起学习一个简单的聊天应用程序 我在服务器代码中检查了连接与连接事件的连接服务器也可以获取我的套接字ID 但是,任何发射或开启都不起作用。 这是我的服务器代码 这是客户端代码 有了这段代码,当我按下按钮时,我认为socket.on在服务器上工作 此外,当套接字在服务器中连接时,客户端会更改渲染中的文本。 但两者都不起作用。 请帮帮我...

  • 问题内容: 我正在开发一个与tomcat 7(7.0.27)兼容的应用程序(为tomcat 5.5开发)。我在使用jstl时遇到问题,当我指定时,只是不输出标签: 在我的WEB-INF / web.xml文件中(以前使用的是2.4版本)。 .jsp文件示例: … 而不是预期的输出,我收到: 作为文本字段中的值。 我使用JSTL 1.2.1,Tomcat 7.0.27,JSP 2.2。代码会编译,当

  • 我的Spring Boot服务将执行一项工作,并在成功后退出0(没有restcontroller),但我也希望它在每个异常时退出,因此我在类上添加了并放置了以下方法: 一切正常,但当我抛出一个IllegalArgumentException时,方法不会被调用。首先,我有一个没有参数的void方法,然后我开始尝试使用字符串返回和至少一个参数--这是不需要的。 这怎么行?有没有更好的方法让我的案例对每

  • 从这个网站http://www.thedurkweb.com/automated-anonymous-interactions-with-webs-using-python-and-tor/ 回溯(最近一次调用):文件“C:\users\user\appdata\local\programs\python\python35-32\lib\site-packages\selenium\webdriv