JAX-RS异常处理

Ale*_*ets 5 rest cxf jax-rs

我对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.虽然我可能会错过搜索结果中的内容.处理这种情况的正确方法是什么?请建议一些事情.我坚持这个问题......

The*_*ect 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();
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 我发现杰克逊实际上已经实现了我需要的异常映射器.它位于包'org.codehaus.jackson.jaxrs`中,并具有预期的名称`JsonMappingExceptionMapper`.默认实现返回状态代码400和简短的异常描述消息.Jackson还有一个名为`JsonParseExceptionMapper`的映射器,用于JSON解析错误. (3认同)