Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring ExceptionHandler返回500内部错误_Java_Rest_Spring Mvc_Exception Handling - Fatal编程技术网

Java Spring ExceptionHandler返回500内部错误

Java Spring ExceptionHandler返回500内部错误,java,rest,spring-mvc,exception-handling,Java,Rest,Spring Mvc,Exception Handling,我正在使用Spring3.4.0开发一个RESTful服务器。我有几个API正在工作。现在我添加了错误处理。我从控制器类中的基本@ExceptionHandler开始 我创建了一个我自己的APIException类: 公共类APIException扩展了RuntimeException 我创建了一个ErrorInfo类 最后在我的控制器中添加了handleAppiexception方法。这里的值是硬编码的。一旦这起作用,我将改变这一点: @ExceptionHandler(APIExceptio

我正在使用Spring3.4.0开发一个RESTful服务器。我有几个API正在工作。现在我添加了错误处理。我从控制器类中的基本@ExceptionHandler开始

我创建了一个我自己的APIException类: 公共类APIException扩展了RuntimeException

我创建了一个ErrorInfo类

最后在我的控制器中添加了handleAppiexception方法。这里的值是硬编码的。一旦这起作用,我将改变这一点:

@ExceptionHandler(APIException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorInfo handleAPIException(APIException e) {
    ErrorInfo errorInfo = new ErrorInfo();
    errorInfo.setCode(3344);
    errorInfo.setStatus(HttpStatus.BAD_REQUEST.value());
    errorInfo.setMessage("test message!");
    errorInfo.setDeveloperMessage("test developer message!");
    errorInfo.setMoreInfo("no more info");
    errorInfo.setRequestId("testrequest123");

    return errorInfo;
}
现在,当我使用调试器运行它并逐步完成时,它确实到达了这个函数,并且这个函数一直执行到最后。但是在客户端,我得到了下面的html响应,而不是ErrorInfo的json表示。我尝试将handleAPIException响应更改为ModelAndView,而不是ErrorInfo,但这也没有帮助


Apache Tomcat/7.0.47-错误报告HTTP状态500-请求处理失败;嵌套异常为co.company.here.exception.APIException类型异常报告

消息请求处理失败;嵌套异常是co.company.here.exception.APIException

说明服务器遇到内部错误,无法满足此请求。

异常

根本原因

注意,根本原因的完整堆栈跟踪可在Apache Tomcat/7.0.47日志中找到。

Apache Tomcat/7.0.47

和此函数一直执行到最后你确定吗?在其中放入一些日志语句并仔细检查。好吧,您正在将状态设置为BAD_REQUEST,即400,但Tomcat正在抛出一个500…更新:实际上意识到我没有使用spring版本3.4.0,正如我在问题中提到的那样。在pom.xml中,spring.version被设置为3.0.5.RELEASE。我将其更新为3.2.1.0版本,现在可以完美运行。谢谢你的评论。我将结束这个问题。 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is co.company.here.exception.APIException org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) co.company.here.exception.APIException co.company.here.controller.BusinessController.createBusiness(BusinessController.java:114) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)