7.12.3. 例外処理に対するアノテーションの使用
次の例外は Seam コンポーネント層の外部に伝播すると必ず HTTP 404 エラーが発生します。送出されてもすぐに現在のトランザクションをロールバックしませんが、別の Seam コンポーネントによって例外がキャッチされないとこのトランザクションはロールバックされます。
@HttpError(errorCode=404)
public class ApplicationException extends Exception {
...
}
@HttpError(errorCode=404)
public class ApplicationException extends Exception {
...
}
この例外は Seam コンポーネント層の外部に伝播すると必ずブラウザリダイレクトが発生します。また現在の対話も終了させます。 これにより現在のトランザクションを即時ロールバックすることになります。
注記
Seam は JSF の
RENDER_RESPONSE フェーズ中に発生する例外は処理できません。一度応答の出力が開始するとリダイレクトを実行することができないからです。
EL を使ってリダイレクト先の
viewId を指定することも可能です。
この例外が Seam コンポーネント層の外部に伝播すると、 リダイレクトとなりユーザーにメッセージが表示されます。 また、 現在のトランザクションを直ちにロールバックします。
@Redirect(viewId="/error.xhtml", message="Unexpected error")
public class SystemException extends RuntimeException {
...
}
@Redirect(viewId="/error.xhtml", message="Unexpected error")
public class SystemException extends RuntimeException {
...
}