问题标签 [exceptionmapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
363 浏览

exception - Junit:使用异常映射器测试抛出的异常

如何在使用异常映射器时使用 Junit4 测试抛出的异常?

0 投票
1 回答
817 浏览

java - Dropwizard将自定义异常反序列化为JSON?

我在 Dropwizard 服务中创建了一个新的异常类,它扩展了 BadRequestException。

当我最初抛出那个异常时,我只得到了反序列化的 BadRequestException,减去了附加属性(validationFailures)

这是因为 Dropwizard 的内部有一个默认的异常映射器,它允许 Jetty/Jackson 了解域异常以及如何发送适当的 HTTP 响应。

要克服这个问题,您可以实现自己的 ExceptionMapper 类并将其注册到 Dropwizard。

然而这个问题是它反序列化了超级(Throwable),所以你会在我不想要的响应中添加每个继承的属性。

为了解决这个问题,我尝试像这样添加 Jackson 注释:

这不是最佳解决方案,因为除了 stackTrace 之外还有几个属性我需要忽略。

总而言之,我怎样才能让 Dropwizard 正确反序列化我的 CustomException 类而没有我不需要的所有额外混乱?

0 投票
1 回答
353 浏览

java - Jersey ExceptionMapper,依赖另一个 ExceptionMapper

我有ExceptionMapper一个通用公共库的一部分:

现在,在我的具体项目中,我有自己的ExceptionMapper

我想将其转换SomeAdHocExceptionGenericException并让GenericExceptionMapper负责进一步处理。我尝试了以下两个选项,但都不起作用:

[1]GenericException投入SomeAdHocExceptionMapper

[2]GenericExceptionMapper注入SomeAdHocExceptionMapper

这两个选项都给出了依赖性异常。

我该如何解决这个问题?

0 投票
1 回答
562 浏览

java - 使用单个 ExceptionMapper 捕获 Jackson 抛出的任何异常

我有一个使用Jackson处理 JSON 转换的 JAX-RS 项目。

当 Jackson 抛出异常时,它会自动返回一个带有错误描述的字符串。

因为我想返回一个自定义 JSON 对象,所以我创建了一个ExceptionMapper

问题是,只有当我准确指定抛出异常的类型时,它才会捕获异常。

例如,当发送到方法的 JSON 包含未知属性时,此方法有效:

但是,如果我更改UnrecognizedPropertyExceptionPropertyBindingException(第一个扩展的),它将不起作用。

简而言之:

如何创建一个通用异常映射器来捕获 Jackson(或我的应用程序的任何其他组件)抛出的任何异常?

0 投票
0 回答
406 浏览

spring-boot - restcontroller 使用 exceptionMapper,这样 jersey 和 restcontroller 可以共存

我正在使用带有 Jersey 1 的 spring boot。使用 ExceptionMapper 来处理全局异常。现在我们计划迁移到 Spring MVC 以实现宁静的目的。因此,更改少数端点以使用调度程序 servlet。有没有办法使用 exceptionMapper 处理所有异常。存在 ControllerAdvice 来为 spring mvc 全局处理异常,但无论如何我可以暂时使用 ExceptionMapper 提供程序吗?

谢谢

0 投票
1 回答
549 浏览

java - Restful Spring 启动应用程序中的异常映射

我有一个自定义的异常类,我想在发生异常时将其作为 json 返回。

SpringCacheException.java

RestExceptionHandler.java

抛出异常:-

在这里,我从数据库中删除联系人表并引发异常,我得到以下长响应。

我只想要一个 SpringCacheException 类型的 json,但我得到的这个长 json 数据不正确。谁能告诉我我在哪里做错了。谢谢 !

整个代码可以在 - https://github.com/iftekharkhan09/SpringCaching找到

0 投票
1 回答
2318 浏览

exception - 泽西岛的多个 ExceptionMapper

假设我有两个 ExceptionMapper:

如果抛出 WebApplicationException 或 WebApplicationException 的子异常,哪个映射器会处理它们?有人可以解释一下吗?

谢谢

0 投票
3 回答
6049 浏览

java - 如何将 JSON 解析相关错误映射到球衣中的 json 响应

我定义了一个数据类型及其 API:

{ "name": "xxx" }如果我摆姿势一切都很好

但是当我发布时{ "name1": "xxx" },我得到了以下text/plain回复:

我更喜欢将上述错误转换为 JSON 响应。但是事件我添加了以下异常映射器,它没有返回 JSON 响应。

为什么我上面的异常映射器无法捕获球衣解析错误。有人可以向我解释吗?谢谢

更新

我有两个问题:

1、如何做出响应来application/json代替text/plain

2、为什么我的异常映射器没有捕捉到引发的异常并将其映射到json响应?

更新

我添加了以下映射器:

现在,我可以得到 json 响应: { "code": 500, "message": "Unrecognized field \"name1\" (class com.xxx.datatypes.DataType), not marked as ignorable (1 known properties: \"name\"])\n at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@1d8cd12a; line: 2, column: 15] (through reference chain: class com.xxx.datatypes.DataType[\"name1\"])" }

我还有两个问题:

1、为什么我的通用异常映射器无法捕获它。

2、 json映射异常映射器贴出无法映射如下异常(逗号,添加测试用)Unexpected character ('}' (code 125)): was expecting double-quote to start field name at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@7615743c; line: 3, column: 2]{"name": "xxxx",}

0 投票
1 回答
551 浏览

java - 由 ExceptionMapper 捕获的 jaxrs 中的自定义 WebApplicationExceptions 显示在服务器日志中

我使用以下 Exceptionmapper 将我的 jaxrs rest api 中的 WebApplicationExceptions 映射到响应。

这工作正常,它完全符合它应该做的事情,但是当我抛出自定义错误时,例如throw new NotFoundException("custom message");堆栈跟踪显示在我的服务器日志中。谁能解释一下?或者有人知道解决方案吗?

TL;博士;

出于某种原因,当我从我的 jax-rs 代码中抛出 WebApplicationExceptions 时,我的 ExceptionMapper 会处理错误但仍会抛出它,因此它会显示在服务器日志中。

有什么解决办法吗?

0 投票
1 回答
143 浏览

java - 使用 ExceptionMapper 记录 CLIENT_ERRORs

我正在开发一个使用 Dropwizard 的应用程序,它具有 ExceptionMapper 的这种实现:https ://github.com/dropwizard/dropwizard/blob/master/dropwizard-jersey/src/main/java/io/dropwizard/jersey/errors /LoggingExceptionMapper.java

这个实现的问题是,即使它捕获了 4** 和 5** 错误,它也只记录了 5** 错误。

我需要实现 ExceptionMapper,以便根本不使用 LoggingExceptionMapper,并且我的 CustomExceptionMapper 同时记录 CLIENT_ERRORs 和 SERVER_ERRORs。

我想知道我的应用程序如何知道它需要使用 CustomExceptionMapper 而不是 Dropwizard 类?

将 CLIENT_ERROR 添加到 if 条件以注销所有错误是否就足够了?

还是有更好的方法来做到这一点?