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

@ExceptionHandler响应在Tomcat中不起作用

裴曜灿
2023-03-14
@ControllerAdvice
public class GlobalExceptionController {

@ExceptionHandler(CustomGenericException.class)
@ResponseBody
public ErrorResource handleCustomException(CustomGenericException ex) {

        ErrorResource errorResource=new ErrorResource("Example 1");
    errorResource.error=ex.getErrCode();

    return errorResource;

}

@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResource> handleAllException(Exception ex) {

    ErrorResource errorResource=new ErrorResource("Example 2");
    errorResource.error=ex.getMessage();

    return new ResponseEntity<ErrorResource>(errorResource,HttpStatus.NOT_FOUND);

}

}
class ErrorResource {
public String error;

public ErrorResource(String a ){error=a;}
}

我使用maven的Tomcat7插件来运行和调试应用程序,所以当我调试时,我可以看到@ExceptionHandler正在触发和执行return语句。但是我得到的不是JSON而是HTTP 500错误:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.mkyong.web.exception.CustomGenericException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

如果我返回一个视图或ModelView正在工作,但每当我试图返回ResponseBody或ResponseEntity时,我仍然会得到相同的错误。

最后,如果我不使用tomcat,而是使用SpringBoot来运行应用程序,我不会得到错误,并且得到的响应与我应该收到的一样:

{"error":"E888"}

共有1个答案

孙才捷
2023-03-14

@ExceptionHandler方法没有@ResponseBody返回类型,它只能返回转换为视图的ModelView字符串

返回类型可以是字符串,它被解释为视图名称或ModelAndView对象。

有关更多信息,请参见此处:Spring@ExceptionHandler不能与@ResponseBody一起使用

 类似资料:
  • 我在wordpress的论文框架中使用下面给出的媒体查询。但它不起作用。我也从这些答案中得到了帮助,但仍然不起作用。 响应型网站可在桌面上运行,但不能在移动设备上运行 响应媒体查询不工作 当我在此处检查此查询时http://www.responsinator.com/?url=http://www.lvticketattorney.com/ 它正在工作。但当我在移动设备上检查它时,它不工作。 媒体

  • 问题内容: 我想在我的插件中添加AJAX支持,而这个简单的东西有很大的问题。WordPress不允许我使用普通的AJAX,我需要使用WordPress版本。 在任何时候,WordPress函数(应生成输出)都返回0。我认为原因是WP不会触发“函数”。我试图强制该功能多次运行,但是我不知道我可以改进什么。 我尝试添加alert(’echo’); 测试功能,但没有任何效果。我认为AJAX无法运行适当的

  • 问题内容: 我将项目从1)Tomcat 1.7升级到tomcat 1.8 2)STS 2. 升级到STS3。 3)maven 2. *升级到Maven 3. * 在STS中升级时,当我做Maven清理时,我得到以下错误 我的POM.xml文件在下面。 我对mvaen版本非常陌生,请帮助我解决问题。 问题答案: 您配置的tomcat错误。在您的pom.xml中,添加tomcat插件。(您可以将其用于

  • 问题内容: 我是新来的人,我想做出反应并尝试使用内联样式获取背景图片。但这不起作用。 显示错误“ URL未定义” 问题答案: CSS值始终是字符串。将值用引号引起来,使其成为字符串:

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

  • 对于某些HTTP请求,我收到“非HTTP响应消息:连接超时:连接”,因此我尝试将连接/响应超时值设置为2分钟(这超过了失败HTTP请求所需的连接时间)。为此,我更新了“HTTP 请求默认值”,并将 120000 添加为连接和响应超时。 但是,当我再次运行测试时,HTTP请求仍然给出了相同的错误。示例结果如下- 看起来我在HTTP请求中设置的超时值默认值在这里没有被使用。我还尝试在jmeter.pr