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. 内部で出力される例外の管理 リンクのコピーリンクがクリップボードにコピーされました!
| 例外 | 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 | Jakarta XML Bidning プロバイダー (XML および Jackson) は、JAXBExceptions をラップする可能性のある読み取りでこの例外を出力します。このクラスは ReaderException を拡張します。 |
| JAXBMarshalException | 500 | Jakarta XML Bidning プロバイダー (XML および Jackson) は、JAXBExceptions をラップする可能性のある書き込みでこの例外を出力します。このクラスは WriterException を拡張します。 |
| ApplicationException | 該当なし | アプリケーションコードから出力されるすべての例外をラップし、InvocationTargetException と同じように機能します。ラップされた例外に対する ExceptionMapper がある場合は、要求の処理に使用されます。 |
| 失敗 | 該当なし | 内部 RESTEasy エラー。ログに記録されない。 |
| LoggableFailure | 該当なし | 内部 RESTEasy エラー。ログが記録されています。 |
| DefaultOptionsMethodException | 該当なし |
ユーザーが |
| UnrecognizedPropertyExceptionHandler | 400 | RESTEasy Jackson プロバイダーは、JSON データが無効であると判断するとこの例外が発生します。 |