50.3. JAX-RS 2.0 Exception 类型

概述

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

异常层次结构

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

图 50.1. JAX-RS 2.0 Application Exception Hierarchy

exception 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 Method Not Allowed HTTP 错误状态。
NotAuthorizedException

封装 401 Unauthorized HTTP 错误状态。在以下情况下可以引发这个例外:

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

服务器例外

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

InternalServerErrorException
封装 500 内部服务器错误 HTTP 错误状态。
ServiceUnavailableException
封装 503 服务 Unavailable HTTP 错误状态。