My Wildfly resteasy服务工作正常,或直到我更改了代码。没什么大不了的,现在我收到了反序列化错误:"Problem deserializing 'setterless' property ..."
我的问题是,无论如何都要在客户端中收到错误消息。我的状态为400,我可以测试一下,但如果可能,我想收到任何消息。有什么想法吗?
如果我在用户代码中出现错误,我可以在标题中设置错误消息,但由于存在反序列化问题,服务器在获取任何用户代码之前会抛出错误。
答案 0 :(得分:0)
您可以使用ExceptionMapper
来处理返回给客户端的响应。 JAX-RS有一个异常层次结构,可以映射到不同的响应和状态代码。 JAX-RS中的400是BadRequestException
。所以你可以做类似
@Provider
public class BadRequestExceptionMapper
implements ExceptionMapper<BadRequestException> {
@Override
public Response toResponse(BadRequestException e) {
Response response = Response.status(Response.Status.BAD_REQUEST)
.entity("Sorry I forgot to implement a Setter").build();
return response;
}
}
这不是一个非常好的例子,因为BadRequestException
由于许多其他原因而被抛出,而不仅仅是忘记了一个setter(或反序列化),但它演示了如何在抛出异常后拦截响应。