2.14. 例外処理

2.14.1. 例外マッパーの作成

例外マッパーは、発生する例外をキャッチし、特定の HTTP 応答を書き込むアプリケーションが提供するカスタムコンポーネントです。

例外マッパーを作成する場合は、@Provider アノテーションが付けられたクラスを作成し、ExceptionMapper インターフェイスを実装します。

以下は例外マッパーの例です。

@Provider
public class EJBExceptionMapper implements ExceptionMapper<javax.ejb.EJBException> {
  public Response toResponse(EJBException exception) {
    return Response.status(500).build();
  }
}

例外マッパーを登録するには、web.xml ファイルの resteasy.providers context-param 一覧し、ResteasyProviderFactory クラスでプログラムで登録します。

2.14.2. 内部で出力される例外の管理

表2.2 例外リスト

例外HTTP コード説明

BadRequestException

400

正しくない要求。リクエストが適切にフォーマットされていなかったか、リクエスト入力の処理に問題がありました。

UnauthorizedException

401

承認されていません。RESTEasy のアノテーションベースのロールベースのセキュリティーを使用している場合には、セキュリティー例外が発生します。

InternalServerErrorException

500

内部サーバーエラー。

MethodNotAllowedException

405

リソースによって呼び出された HTTP 操作を処理するための Jakarta RESTful Web Services メソッドはありません。

NotAcceptableException

406

Accept ヘッダーにリストされているメディアタイプを生成できる Jakarta RESTful Web Services メソッドはありません。

NotFoundException

404

リクエストパス/リソースを提供する Jakarta RESTful Web Services メソッドはありません。

ReaderException

400

MessageBodyReaders から発生するすべての例外は、この例外内でラップされます。ラップされた例外に対する ExceptionMapper がない場合、または例外が WebApplicationException ではない場合、デフォルトでは RESTEasy は 400 コードを返します。

WriterException

500

MessageBodyWriters から発生するすべての例外は、この例外内でラップされます。ラップされた例外に対する ExceptionMapper がない場合、または例外が WebApplicationException ではない場合、デフォルトでは RESTEasy は 400 コードを返します。

JAXBUnmarshalException

400

JAXB プロバイダー (XML および Jackson) は、この例外を読み取りで出力します。これは、JAXBExceptions をラップする可能性があります。このクラスは ReaderException を拡張します。

JAXBMarshalException

500

JAXB プロバイダー (XML および Jackson) は書き込みでこの例外を出力します。これは、readsExceptions をラップする可能性があります。このクラスは WriterException を拡張します。

ApplicationException

該当なし

アプリケーションコードから出力されるすべての例外をラップし、InvocationTargetException と同じように機能します。ラップされた例外に対する ExceptionMapper がある場合は、要求の処理に使用されます。

失敗

該当なし

内部 RESTEasy エラー。ログに記録されない。

LoggableFailure

該当なし

内部 RESTEasy エラー。ログが記録されています。

DefaultOptionsMethodException

該当なし

ユーザーが HTTP OPTIONS を呼び出しても、Jakarta RESTful Web Services メソッドが呼び出されない場合、RESTEasy はこの例外を発生させてデフォルトの動作を提供します。

UnrecognizedPropertyExceptionHandler

400

RESTEasy Jackson プロバイダーは、JSON データが無効であると判断するとこの例外が発生します。