【发布时间】:2020-04-20 14:52:27
【问题描述】:
我的 Spring 项目中有一个客户端和服务器模块在不同的端口上运行。客户端模块通过 RestTemplate 向服务器发出 POST 请求。服务器模块抛出带有自定义错误消息的自定义异常。目前,在我的项目中,服务器有一个 RestControllerAdvice 类来处理如下异常:
@RestControllerAdvice
public class AppRestControllerAdvice {
@ExceptionHandler(ApiException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public MessageData handle(ApiException e) {
MessageData data = new MessageData();
data.setMessage(e.getMessage());
return data;
}
}
在客户端,以下方法捕获来自服务器的响应。
@RestControllerAdvice
public class AppRestControllerAdvice {
@ExceptionHandler(ApiException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public MessageData handle(ApiException e) {
MessageData data = new MessageData();
data.setMessage(e.getMessage());
return data;
}
@ExceptionHandler(Throwable.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public MessageData handle(Throwable e) {
MessageData data = new MessageData();
data.setMessage("UNKNOWN ERROR- " + e.getMessage());
e.printStackTrace();
return data;
}
}
每当在服务器上抛出异常时,这是我在客户端上收到的内容
{
"message": "UNKNOWN ERROR- org.springframework.web.client.HttpClientErrorException: 400 Bad Request"
}
我的问题是,我如何检索源自服务器的自定义异常消息?
另外,为什么客户端正确的 RestControllerAdvice 模块没有发现错误? (INTERNAL_SERVER_ERROR 方法而不是 BAD_REQUEST 方法捕获错误。)
【问题讨论】:
标签: spring exception resttemplate