我对Java中的REST服务比较陌生。我创建了一个,除错误处理外,一切正常。如果我在其中发出错误形成JSON的请求,Jackson JSON处理器抛出一个我无法捕获的异常,我在客户端得到错误500。例外情况如下:
javax.ws.rs.InternalServerErrorException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.HashSet out of VALUE_STRING token
我不知道如何处理我的代码之外引发的异常。 Google建议使用Exception Mappers或Phase Inteceptors。虽然我可能会错过搜索结果中的内容。 处理这种情况的正确方法是什么? 请建议一些事情。我坚持这个问题......
答案 0 :(得分:5)
JAX-RS ExceptionMapper应该完成这项工作。只需在代码中添加如下所示的类,如果您拥有正确的异常类型,那么您应该获得定制处理的钩子。
@Provider
public class MyExceptionMapper implements ExceptionMapper<MyException> {
@Override
public Response toResponse(MyException ex) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}