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

exceptions 01

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 ヘッダーで) 必要なクレデンシャルを送信しなかった。
  • クライアントはクレデンシャルを提示したが、認証情報が有効ではなかった。
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 エラーステータスをカプセル化します。