Jersey
documentation解释了如何将 Exception
转换为 Response
,但它未能详细说明如果我的代码抛出未映射的 Exception
将会发生什么或派生自 WebApplicationException
。
If the thrown exception is not handled by a mapper, it is propagated and handled by the container (i.e., servlet) JAX-RS is running within.
但这仅解释了 JAX-RS 2.0
一般情况下的行为方式,而不是 Jersey
(它是中的容器
)的行为方式。在这种情况下,将处理这个异常
。
我知道有些人会说好吧,你为什么不尝试一下,看看会发生什么?
...答案是:因为我喜欢了解文档我尽量避免实证结果,因为它们可能会受到巧合和异常(exception)情况的影响
。
所以,问题是:
Jersey
如何处理未映射的异常
,例如 SQLException
或 IllegalArgumentException
?由我的资源
之一引发且未由我的代码处理的异常
。
最佳答案
Jersey 总是部署在某个地方。通常,它是一个 servlet 容器(例如在应用程序服务器或 Tomcat 中),但在仅限 Java SE 的环境中,它可以是例如 Grizzly甚至JDK HTTP server 。请参阅documentation用于部署选项。
Jersey 未捕获(或抛出)的异常会发生什么情况取决于此部署环境。例如,Servlet 容器通常会捕获异常,将其记录下来并返回 http 状态 500。
关于java - Jersey 对未映射异常的行为如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218871/