第 50 章 处理例外
摘要
如果可能,资源方法捕获的异常应会导致将有用的错误返回到请求使用者。JAX-RS 资源方法可以抛出 WebApplicationException 异常。您还可以提供 ExceptionMapper<E> 实施,将例外映射到适当的响应。
50.1. JAX-RS Exception 类概述
概述
在 JAX-RS 1.x 中,唯一可用的异常类是 WebApplicationException
。但是,由于 JAX-WS 2.0,已定义了多个额外的 JAX-RS 例外类。
JAX-RS 运行时级别例外
以下例外是因为 JAX-RS 运行时仅会抛出(也就是说,不得 从应用程序级代码引发这些异常):
ProcessingException
-
(仅限 JAX-RS 2.0)
javax.ws.rs.ProcessingException
可在请求处理期间或在 JAX-RS 运行时中的响应处理期间抛出。例如,可能会因为过滤器链或拦截器链处理中的错误而抛出这个错误。 responseProcessingException
-
(仅限 JAX-RS 2.0)
javax.ws.rs.client.Response
是处理Exception 的子类,可以在 客户端侧 JAX-RS 运行时发生错误时抛出。ProcessingException
JAX-RS 应用级别例外
在应用程序级别代码中要抛出(和捕获)以下例外:
WebApplicationException
-
javax.ws.rs.WebApplicationException
是一个通用应用级别 JAX-RS 异常,可以在服务器端的应用程序代码中抛出。此异常类型可以封装 HTTP 状态代码、错误消息和(可选)响应消息。详情请查看 第 50.2 节 “使用 WebApplicationException 异常报告”。 ClientErrorException
-
(仅限 JAX-RS 2.0)
javax.ws.rs.ClientErrorException
异常类从WebApplicationException
继承,用于封装 HTTP4xx
状态代码。 ServerErrorException
-
(仅限 JAX-RS 2.0)
javax.ws.rs.ServerErrorException
异常类从WebApplicationException
继承,用于封装 HTTP5xx
状态代码。 RedirectionException
-
(仅限 JAX-RS 2.0)
javax.ws.rs.RedirectionException
异常类从WebApplicationException
继承,用于封装 HTTP3xx
状态代码。