SpringMvc不处理异常

时间:2017-08-31 06:33:32

标签: java spring-mvc file-upload

我在我的其余控制器中定义了注释@ExceptionHandler,但是当我将结果类型标记为text / plain时,它不能正常工作,该方法被定义为处理附加上载请求。 SpringMvc只是把我的业务异常抛给了servlet容器。这是SpringMVC的一个bug吗?我该如何修复它?

@RestController
@RequestMapping("/api/test")
public class TestController extends BasicController{
  @RequestMapping(value="/uploadAttach", headers = ("content-type=multipart/*"),method = RequestMethod.POST,produces="text/plain")
  public String test(){
   throw new ServiceException("biz exception");
  }
  @ExceptionHandler(value = {ServiceException.class})
  @ResponseStatus(HttpStatus.BAD_REQUEST)
  public @ResponseBody StatusMessage serviceError(ServiceException ex) {
    return new StatusMessage(ex.getMessage());
  }
}

2 个答案:

答案 0 :(得分:0)

由于没有人有兴趣回答这个问题,我必须自己解决。 我发现异常处理程序将寻找正确的转换器来处理异常结果,该异常结果被定义为@ExceptionHandler的返回值。在我的控制器中,异常是一个pojo,当我调试程序时,我发现没有转换器可以写pojo来键入“text / plain”,所以SpringMvc将原始异常抛给servlet容器,并返回一个错误页面由Jetty。

答案 1 :(得分:0)

您应该遵循以下提示:

1.您应该定义一个自定义的例外,      但它必须扩展Exception.class;

2.设置一个全局异常hadler,并且dao将异常抛出到服务,服务抛出到控制器,然后控制器使用try ... catch ..代码块来解决它;

3.应在SpringMVC.xml中配置bean 像这样:

4.就是这样,你可以使用一些简单的代码来测试它,比如1/0;