第50章 例外処理

概要

可能な場合に、リソースメソッドがキャッチした例外をトリガーとして、有用なエラーが要求元コンシューマーに返されるはずです。JAX-RS リソースメソッドは WebApplicationException 例外を出力できます。例外を適切な応答にマッピングするために ExceptionMapper<E> 実装を指定することもできます。

50.1. JAX-RS 例外クラスの概要

概要

JAX-RS 1.x では、利用可能な例外クラスは WebApplicationException のみです。しかし、JAX-WS 2.0 以降、多くの JAX-RS 例外クラスが追加で定義されています。

JAX-RS ランタイムレベルの例外

以下の例外は、JAX-RS ランタイムでだけ出力されるはずです (つまり、これらの例外はアプリケーションレベルのコードからは出力しないでください)。

ProcessingException
(JAX-RS 2.0 のみ) リクエストの処理中または JAX-RS ランタイムでの応答処理中に javax.ws.rs.ProcessingException を出力できます。たとえば、フィルターチェーンまたはインターセプターチェーン処理のエラーが原因で、このエラーが出力される可能性があります。
ResponseProcessingException
(JAX-RS 2.0 のみ) javax.ws.rs.client.ResponseProcessingExceptionProcessingException のサブクラスであり、クライアント側 の JAX-RS ランタイムでエラーが発生したときに出力される可能性があります。

JAX-RS アプリケーションレベルの例外

以下の例外は、アプリケーションレベルのコードで出力 (およびキャッチ) されるように設計されています。

WebApplicationException
javax.ws.rs.WebApplicationException は、汎用アプリケーションレベルの JAX-RS 例外で、サーバー側のアプリケーションコードで出力できます。この例外タイプは、HTTP ステータスコード、エラーメッセージ、および応答メッセージをカプセル化 (任意) できます。詳細は、「WebApplicationException 例外を使用したレポート」 を参照してください。
ClientErrorException
(JAX-RS 2.0 のみ) javax.ws.rs.ClientErrorException 例外クラスは WebApplicationException から継承し、HTTP 4xx ステータスコードをカプセル化するために使用されます。
ServerErrorException
(JAX-RS 2.0 のみ) javax.ws.rs.ServerErrorException 例外クラスは WebApplicationException から継承し、HTTP 5xx ステータスコードをカプセル化するために使用されます。
RedirectionException
(JAX-RS 2.0 のみ) javax.ws.rs.RedirectionException 例外クラスは WebApplicationException から継承し、HTTP 3xx ステータスコードをカプセル化するために使用されます。