Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
使用SpringMVC发送异常和Json_Json_Spring Mvc_Exception Handling_Http Status Codes - Fatal编程技术网

使用SpringMVC发送异常和Json

使用SpringMVC发送异常和Json,json,spring-mvc,exception-handling,http-status-codes,Json,Spring Mvc,Exception Handling,Http Status Codes,我试图在SpringMVC上下文中管理异常,并发送不同的http状态作为响应 我试过这个: @ResponseStatus(值=HttpStatus.SERVICE\u不可用) 公共类UnavailableServiceException扩展RuntimeException{ } 当我在控制器中发送此异常时,它工作正常:响应http状态为503。 但我想让我的控制器发送json,在这种配置下,当503被发送时,响应是html:-/ 所以我试了一下: 在我的异常类上删除@ResponseStatu

我试图在SpringMVC上下文中管理异常,并发送不同的http状态作为响应

我试过这个:

@ResponseStatus(值=HttpStatus.SERVICE\u不可用)
公共类UnavailableServiceException扩展RuntimeException{
}

当我在控制器中发送此异常时,它工作正常:响应http状态为503。 但我想让我的控制器发送json,在这种配置下,当503被发送时,响应是html:-/

所以我试了一下:

在我的异常类上删除@ResponseStatus并定义异常处理程序

@ExceptionHandler(UnavailableServiceException.class)
公共责任handleUnavailableService(UnavailableServiceException){
返回新的ResponseEntity(新的ExceptionJSONInfo(“错误xxx”,exception.getMessage()),HttpStatus.SERVICE\u不可用);
}

没关系:503和json。 但我想管理5或6个不同的异常:如何在不复制处理程序的情况下实现这一点? 是否可以检索在异常上定义的@ResponseStatus

如果没有,我的下一个想法将是在一个超级类中定义一个httpStatus属性,它是我所有异常的母亲。然后:

公共类UnavailableServiceException扩展了MySuperException{
超级(HttpStatus.SERVICE\u不可用);
}

@ExceptionHandler(MySuperException.class)
公共响应handleUnavailableService(MySuperException异常){
返回新的ResponseEntity(新的ExceptionJSONInfo(“错误xxx”,exception.getMessage()),exception.getHttpStatus());
}

还有更好的主意吗

谢谢


Manu

您是自己抛出异常还是同时处理运行时异常?我没有问自己这个问题。。。但是处理这两种情况会更好。然后,您可以对引发的异常使用Exception.getMessage()方法,考虑到您在引发异常时正在构造函数中传递消息。