使用SpringMVC发送异常和Json
我试图在SpringMVC上下文中管理异常,并发送不同的http状态作为响应 我试过这个:使用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
@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()方法,考虑到您在引发异常时正在构造函数中传递消息。