第 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
-
(仅)
javax.ws.rs.client.Response
的子类 processingException,可以在 客户端的 JAX-RS 运行时中出现错误时抛出。ProcessingException
JAX-RS 应用级别例外
以下例外旨在在应用程序级别代码中抛出(并发现):
WebApplicationException
-
javax.ws.rs.WebApplicationException
是一个通用应用级别 JAX-RS 异常,它可以抛出服务器侧的应用程序代码中。此异常类型可以封装 HTTP 状态代码、错误消息,以及(可选)响应消息。详情请查看 第 50.2 节 “使用 WebApplicationException 例外报告”。 ClientErrorException
-
(JAX-RS 2.0 only)
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
状态代码。