相关疑难解决方法(0)

泽西岛无法抓住任何杰克逊的例外

对于我的REST api,我使用jersey和ExceptionMapper来捕获全局异常.它适用于我的应用程序抛出的所有异常,但我无法捕获杰克逊抛出的异常.

例如,我的一个端点接受包含枚举的对象.如果请求中的Json有一个不在enum jersey中的值,则返回此异常

Can not construct instance of my.package.MyEnum from String value 'HELLO': value not one of declared Enum instance names: [TEST, TEST2]
at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@5922e236; line: 3, column: 1] (through reference chain: java.util.HashSet[0]->....)
Run Code Online (Sandbox Code Playgroud)

即使我已经创建了这个映射器

@Provider
@Component
public class JacksonExceptionMapper implements ExceptionMapper<JsonMappingException> {
  @Override
  public Response toResponse(JsonMappingException e) {
    ....
  }
}
Run Code Online (Sandbox Code Playgroud)

代码永远不会到达此映射器.

为了捕捉这些例外,我们还需要做些什么吗?

编辑 注意:我有jus尝试不太通用而不是JsonMappingException我使用InvalidFormatException在这种情况下调用映射器.但我仍然不明白,因为InvalidFormatException扩展了JsonMappingException,也应该被调用

json exception jersey jackson exceptionmapper

8
推荐指数
2
解决办法
2101
查看次数

标签 统计

exception ×1

exceptionmapper ×1

jackson ×1

jersey ×1

json ×1