50.3. JAX-RS 2.0 Exception 类型

概述

JAX-RS 2.0 引入了多个特定的 HTTP 例外类型,您可以在应用程序代码中抛出(除现有的 WebApplicationException 异常类型外)。这些异常类型可用于嵌套标准 HTTP 状态代码,包括 HTTP 4xx 状态代码(HTTP 4xx 状态代码)或 HTTP 服务器错误(HTTP 5xx 状态代码)。

例外层次结构

图 50.1 “JAX-RS 2.0 应用异常层次结构” 显示 JAX-RS 2.0 支持的应用级别例外的层次结构。

图 50.1. JAX-RS 2.0 应用异常层次结构

例外 01

WebApplicationException 类

javax.ws.rs.WebApplicationException 异常类(自 JAX-RS 1.x 开始可用)位于 JAX-RS 2.0 层次结构的基础,在 第 50.2 节 “使用 WebApplicationException 例外报告” 中详细介绍。

ClientErrorException 类

javax.ws.rs.ClientErrorException 异常类用于封装 HTTP 客户端错误(HTTP 4xx 状态代码)。在应用程序代码中,您可以抛出此异常或其子类之一。

ServerErrorException 类

javax.ws.rs.ServerErrorException 异常类用于封装 HTTP 服务器错误(HTTP 5xx 状态代码)。在应用程序代码中,您可以抛出此异常或其子类之一。

RedirectionException 类

javax.ws.rs.RedirectionException 异常类用于封装 HTTP 请求重定向(HTTP 3xx 状态代码)。这个类的构造器使用一个 URI 参数,它指定重定向位置。重定向 URI 可以通过 getLocation() 方法访问。通常,HTTP 重定向在客户端是透明的。

客户端异常子类

您可以在 JAX-RS 2.0 应用程序中引发以下 HTTP 客户端异常(HTTP 4xx 状态代码):

BadRequestException
封装 400 Bad Request HTTP 错误状态。
ForbiddenException
封装 403 Forbidden HTTP 错误状态。
NotAcceptableException
封装 406 Not Acceptable HTTP 错误状态。
NotAllowedException
封装 405 方法 Not Allowed HTTP 错误状态。
NotAuthorizedException

封装 401 Unauthorized HTTP 错误状态。在以下情况下可能会引发这个异常:

  • 客户端没有发送所需的凭证(在 HTTP Authorization 标头中),或者
  • 客户端显示凭据,但凭据无效。
NotFoundException
封装 404 Not Found HTTP 错误状态。
NotSupportedException
封装 415 Unsupported Media Type HTTP 错误状态。

服务器异常子类

您可以在 JAX-RS 2.0 应用程序中引发以下 HTTP 服务器例外(HTTP 5xx 状态代码):

InternalServerErrorException
封装 500 Internal Server Error HTTP 错误状态。
ServiceUnavailableException
封装 503 Service Unavailable HTTP 错误状态。