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 应用异常层次结构
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
标头中),或者 - 客户端显示凭据,但凭据无效。
-
客户端没有发送所需的凭证(在 HTTP
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 错误状态。