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 | 該当なし |
ユーザーが |
UnrecognizedPropertyExceptionHandler | 400 | RESTEasy Jackson プロバイダーは、JSON データが無効であると判断するとこの例外が発生します。 |