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
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
身份验证标头中
)或 - 客户端显示凭据,但凭证无效。
-
客户端没有发送所需的凭证(在 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 错误状态。