50.3. JAX-RS 2.0 例外タイプ
概要
JAX-RS 2.0 では、アプリケーションコードで出力 (およびキャッチ) できる特定の HTTP 例外型が導入されています (既存の WebApplicationException
例外型に加えて)。これらの例外型は、HTTP クライアントエラー (HTTP 4xx
ステータスコード) または HTTP サーバーエラー (HTTP 5xx
ステータスコード) のいずれかに対して、標準の HTTP ステータスコードをラッピングするために使用できます。
例外の階層
図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 例外階層のベースにあり、「WebApplicationException 例外を使用したレポート」で詳細に説明されています。
ClientErrorException クラス
javax.ws.rs.ClientErrorException
例外クラスは、HTTP クライアントエラー (HTTP 4xx
ステータスコード) をカプセル化するために使用されます。アプリケーションコードでは、この例外またはサブクラスの 1 つを出力できます。
ServerErrorException クラス
javax.ws.rs.ServerErrorException
例外クラスは、HTTP サーバーエラー (HTTP 5xx
ステータスコード) をカプセル化するために使用されます。アプリケーションコードでは、この例外またはサブクラスの 1 つを出力できます。
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
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 エラーステータスをカプセル化します。