我试图了解 ExceptionMapper 的工作原理。
假设我定义了一个 REST 服务,它返回扩展 BaseResponse 的 XYZResponse。我还定义了一个 ExceptionMapper,它返回一个扩展 BaseResponse 的 FailureResponse。
如果发生异常,客户端会收到什么响应?
客户端不应该能够期望总是得到一个 XYZResponse,因为它是在 REST 方法的签名中定义的?如果发生异常,客户端会收到一个 FailureResponse 吗?因此,客户端只能依赖始终接收 BaseResponse 吗?
更新
我测试过:
@Test
public void figureOutResponse()
{
BaseResponse response = null;
try
{
response = occurrenceExportResourceUT
.getStatus(UUID.randomUUID(),4);
}catch (Exception e)
{
System.out.println("Response: " + response);
System.out.println("Message: " + e.getMessage());
}
}
结果:
Response: null
Message: HTTP 404 Not Found
因此,FailureResponse 似乎从未收到过。那么 FailureResponse 有什么用呢?应该收到吗?结果是否意味着 ExceptionWrapper 设置不正确?