インターフェース TryCatchFinally

  • すべての既知の実装クラス:
    LoopTagSupport

    public interface TryCatchFinally
    リソースを管理するための追加のフックを必要とする Tag、IterationTag、BodyTag タグハンドラーの補助インターフェース。

    このインターフェースは、doCatch(Throwable) と doFinally() という 2 つの新しいメソッドを提供します。プロトタイプの呼び出しは次のとおりです。

     h = get a Tag();  // get a tag handler, perhaps from pool
    
     h.setPageContext(pc);  // initialize as desired
     h.setParent(null);
     h.setFoo("foo");
     
     // tag invocation protocol; see Tag.java
     try {
       doStartTag()...
       ....
       doEndTag()...
     } catch (Throwable t) {
       // react to exceptional condition
       h.doCatch(t);
     } finally {
       // restore data invariants and release per-invocation resources
       h.doFinally();
     }
     
     ... other invocations perhaps with some new setters
     ...
     h.release();  // release long-term resources
     
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド  
      修飾子と型 メソッド 説明
      voiddoCatch​(ThrowableSE t)
      タグ内または以下のメソッドのいずれかで BODY を評価しているときに Throwable が発生した場合に呼び出されます: Tag.doStartTag()、Tag.doEndTag()、IterationTag.doAfterBody() および BodyTag.doInitBody()。
      voiddoFinally()
      タグ、IterationTag、BodyTag を実装するクラスに対して、doEndTag() の後にすべてのケースで呼び出されます。
    • メソッドの詳細

      • doCatch

        void doCatch​(ThrowableSE t)
              throws ThrowableSE
        タグ内または以下のメソッドのいずれかで BODY を評価しているときに Throwable が発生した場合に呼び出されます: Tag.doStartTag()、Tag.doEndTag()、IterationTag.doAfterBody() および BodyTag.doInitBody()。

        Throwable が setter メソッドの 1 つ中に発生した場合、このメソッドは呼び出されません。

        このメソッドは、ネストチェーンの上位に伝搬される例外(同じまたは新しいもの)をスローする場合があります。例外がスローされると、doFinally() が呼び出されます。

        このメソッドは、例外的な状態に応答するために使用することを目的としています。

        パラメーター:
        t - このタグをナビゲートするスロー可能な例外。
        例外:
        ThrowableSE - 例外がネストチェーンのさらに上に再スローされる場合。
      • doFinally

        void doFinally()
        タグ、IterationTag、BodyTag を実装するクラスに対して、doEndTag() の後にすべてのケースで呼び出されます。このメソッドは、タグの BODY または次のメソッドのいずれかで例外が発生した場合でも呼び出されます: Tag.doStartTag()、Tag.doEndTag()、IterationTag.doAfterBody() および BodyTag.doInitBody()。

        Throwable が setter メソッドの 1 つ中に発生した場合、このメソッドは呼び出されません。

        このメソッドは例外をスローするべきではありません。

        このメソッドは、呼び出しごとのデータ整合性とリソース管理アクションを維持することを目的としています。