第 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 的子类 processingException,可以在 客户端的 JAX-RS 运行时中出现错误时抛出。

JAX-RS 应用级别例外

以下例外旨在在应用程序级别代码中抛出(并发现):

WebApplicationException
javax.ws.rs.WebApplicationException 是一个通用应用级别 JAX-RS 异常,它可以抛出服务器侧的应用程序代码中。此异常类型可以封装 HTTP 状态代码、错误消息,以及(可选)响应消息。详情请查看 第 50.2 节 “使用 WebApplicationException 例外报告”
ClientErrorException
(JAX-RS 2.0 only) javax.ws.rs.ClientErrorException 异常类从 WebApplicationException 继承,用于封装 HTTP 4xx 状态代码。
ServerErrorException
(JAX-RS 2.0) javax.ws.rs.ServerErrorException 异常类从 WebApplicationException 继承,用于封装 HTTP 5xx 状态代码。
RedirectionException
(JAX-RS 2.0) javax.ws.rs.RedirectionException 异常类从 WebApplicationException 继承,用于封装 HTTP 3xx 状态代码。