exception - Jersey ExceptionMapper 和继承

标签 exception jersey

假设我有 3 个想要“捕获”的异常类:

  • Jersey 的 WebApplicationException
  • MyException 扩展了 RuntimeException
  • 异常

我希望 WebApplicationException 仍由 Jersey 自动映射,MyException 由 MyMapper 映射,并确保任何其他异常也由 MyFallbackMapper 映射。

因此,因为任何异常(我想要控制的)最终都会扩展 Exception,是否可以保证 MyMapper (而不是 MyFallbackMapper)将用于 MyException?

最佳答案

JAX-RS 1.1 规范,第 4.4 章:

当资源类或提供程序方法抛出异常时,JAX-RS 运行时将尝试将异常映射到合适的 HTTP 响应 - 请参阅第 3.3.4 节。应用程序可以提供异常映射提供程序来自定义此映射。

异常映射提供程序将已检查或运行时异常映射到 Response 的实例。异常映射提供程序实现 ExceptionMapper 接口(interface)并使用 @Provider 进行注释。当资源方法抛出异常且有异常映射提供程序时,匹配的提供程序将用于获取 Response 实例。处理生成的 Response 就好像抛出异常的方法返回了 Response,请参阅第 3.3.3 节。

当选择异常映射提供程序来映射异常时,实现必须使用其泛型类型是异常的最接近父类(super class)的提供程序。

关于exception - Jersey ExceptionMapper 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12722423/

相关文章:

exception - Kotlin 协程无法处理异常

java - 如何接受 JAX-RS( Jersey )中的 Base64 编码数据?

c++ - 抛出异常时不调用 move 构造函数

xml - 如果给出无效数据,AS3 XML 对象不会抛出异常?

java - 如何在 RESTful POST 方法中访问参数

angular - 为在 IntelliJ 中运行的 Tomcat 启用 CORS

jakarta-ee - Payara-Server - 尝试刷新数据时超出写入超时

json - Jaxb 是否需要 @XmlElement

c# - 在 N 层、域驱动设计、MVC 应用程序中处理异常

c# - 在同一个 catch block 中捕获两个异常?