第 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 中继承,用于封装 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 状态代码。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.