クラス ExceptionHandler
- java.lang.ObjectSE
-
- jakarta.faces.context.ExceptionHandler
- 実装されているすべてのインターフェース:
FacesListener、SystemEventListener、EventListenerSE
- 既知の直属サブクラス
ExceptionHandlerWrapper
public abstract class ExceptionHandler extends ObjectSE implements SystemEventListener
ExceptionHandler は、Faces ライフサイクル中にスローされる予期しない
Exceptionを処理するための中心点です。ExceptionHandlerは、アプリケーションの起動時またはシャットダウン時に発生するExceptionの通知を受けてはなりません。デフォルト実装の要件については、Jakarta Faces Specification Document を参照してください。
Exceptionは、次の 2 つの方法のいずれかでExceptionHandlerに渡すことができます。Exceptionがキャッチされない、またはキャッチされて再スローされることを保証することこのアプローチにより、Jakarta Faces Specification Document のセクション 6.2 "ExceptionHandler" で指定された
ExceptionHandler機能がExceptionで動作できるようになります。システムイベント機能を使用して、
ExceptionをラップするExceptionQueuedEventを公開します。このアプローチでは、
ExceptionQueuedEventを手動で公開する必要がありますが、Exceptionに関する詳細情報をイベントに格納できます。次のコードは、これを行う方法の例です。//... } catch (Exception e) { FacesContext ctx = FacesContext.getCurrentInstance(); ExceptionQueuedEventContext eventContext = new ExceptionQueuedEventContext(ctx, e); eventContext.getAttributes().put("key", "value"); ctx.getApplication().publishEvent(ExceptionQueuedEvent.class, eventContext); }このアプローチを使用する場合は
Exceptionを再スローしてはならないため、ライフサイクル処理は通常どおり続行され、必要に応じてより多くのExceptionを公開できます。
どちらのアプローチでも、この方法で発行された
ExceptionQueuedEventインスタンスは、Jakarta Faces Specification Document のセクション 6.2 "ExceptionHandler" で指定されているように、各ライフサイクルフェーズの最後に呼び出されるhandle()メソッドにアクセスできます。PhaseId.RENDER_RESPONSE中にhandle()が呼び出された場合、回復オプションは他のフェーズ中に呼び出された場合よりも制限されることに注意してください。具体的には、RENDER_RESPONSE中にNavigationHandler.handleNavigation(jakarta.faces.context.FacesContext, java.lang.String, java.lang.String)を呼び出すことは無効です。このクラスのインスタンスはリクエストスコープであり、
FacesContextFactory.getFacesContext(java.lang.Object, java.lang.Object, java.lang.Object, jakarta.faces.lifecycle.Lifecycle)がExceptionHandlerFactory.getExceptionHandler()を呼び出すことによって作成されます。- 導入:
- 2.0
コンストラクターの概要
コンストラクター コンストラクター 説明 ExceptionHandler()
方法の概要
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 abstract ExceptionQueuedEventgetHandledExceptionQueuedEvent()このハンドラーによって処理された最初のExceptionQueuedEventを返します。abstract IterableSE<ExceptionQueuedEvent>getHandledExceptionQueuedEvents()abstract ThrowableSEgetRootCause(ThrowableSE t)引数tは、getClass()がFacesException.classまたはjakarta.el.ELException.classと等しくないオブジェクトに遭遇するまでアンラップします。abstract IterableSE<ExceptionQueuedEvent>getUnhandledExceptionQueuedEvents()abstract voidhandle()Application().publishEvent(ExceptionQueuedEvent.class, eventContext)の呼び出しによってキューに入れられたExceptionQueuedEventインスタンス内にあるExceptionインスタンスを処理するアクションを実行します。abstract booleanisListenerForSource(ObjectSE source)このリスナーインスタンスがsourceパラメーターによって参照されるインスタンスからのイベントの受信に関心がある場合にのみ、このメソッドはtrueを返す必要があります。abstract voidprocessEvent(SystemEvent exceptionQueuedEvent)呼び出されると、リスナーは、特定のSystemEventサブクラスの javadoc で指定されたすべての保証が真であると想定できます。
メソッドの詳細
handle
public abstract void handle() throws FacesExceptionApplication().publishEvent(ExceptionQueuedEvent.class, eventContext)の呼び出しによってキューに入れられたExceptionQueuedEventインスタンス内に存在するExceptionインスタンスを処理するためのアクションを実行します。デフォルト実装の要件は、Jakarta Faces Specification Document のセクション 6.2.1「デフォルト ExceptionHandler 実装」で詳しく説明されています。- 例外:
FacesException-Exceptionを処理するアルゴリズムの実行中に問題が発生した場合に限り、処理されたException自体を伝達する手段としてではありません。- 導入:
- 2.0
getHandledExceptionQueuedEvent
public abstract ExceptionQueuedEvent getHandledExceptionQueuedEvent()
このハンドラーによって処理された最初の
ExceptionQueuedEventを返します。- 戻り値:
ExceptionQueuedEventのインスタンス。
getUnhandledExceptionQueuedEvents
public abstract IterableSE<ExceptionQueuedEvent> getUnhandledExceptionQueuedEvents()
handle()メソッドでまだ処理されていないすべてのExceptionQueuedEventにIterableを返します。- 戻り値:
- 未処理の
ExceptionQueuedEventのセット。
getHandledExceptionQueuedEvents
public abstract IterableSE<ExceptionQueuedEvent> getHandledExceptionQueuedEvents()
デフォルトの実装では、
handle()メソッドで処理されたすべてのExceptionQueuedEventでIterableを返す必要があります。- 戻り値:
- すべての
ExceptionQueuedEvent上のIterable
processEvent
public abstract void processEvent(SystemEvent exceptionQueuedEvent) throws AbortProcessingException
呼び出されると、リスナーは、特定の
SystemEventサブクラスの javadoc で指定されたすべての保証が真であると想定できます。- 次で指定:
- インターフェース
SystemEventListenerのprocessEvent - パラメーター:
exceptionQueuedEvent- 処理中のSystemEventインスタンス。- 例外:
AbortProcessingException- このリクエストでライフサイクル処理を停止するかどうか。
isListenerForSource
public abstract boolean isListenerForSource(ObjectSE source)
このリスナーインスタンスが
sourceパラメーターによって参照されるインスタンスからのイベントの受信に関心がある場合にのみ、このメソッドはtrueを返す必要があります。- 次で指定:
- インターフェース
SystemEventListenerのisListenerForSource - パラメーター:
source- このリスナーインスタンスにイベントを送信することの適切性について問い合わせているソース。- 戻り値:
- 上記で指定された値
getRootCause
public abstract ThrowableSE getRootCause(ThrowableSE t)
引数
tは、getClass()がFacesException.classまたはjakarta.el.ELException.classと等しくないオブジェクトに遭遇するまでアンラップします。根本的な原因がない場合は、nullが返されます。- パラメーター:
t- 渡されたラップされたThrowable。- 戻り値:
- ラップされていないオブジェクト。
- 例外:
NullPointerExceptionSE- 引数tがnullの場合。- 導入:
- 2.0