第 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) 可以在请求处理期间或 JAX-RS 运行时中响应期间抛出
javax.ws.rs.ProcessingException
。例如,由于过滤器链或拦截器链处理中的错误,可能会抛出这个错误。 ResponseProcessingException
-
(仅 JAX-RS 2.0)
javax.ws.rs.client.ResponseProcessingException
是处理Exception
的子类,当 客户端侧 的 JAX-RS 运行时出现错误时,可以抛出它。
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
状态代码。