<catch>
構文
<scope>
<throw fault='"MyFault"'/>
...
<faulthandlers>
<catch fault='"MyFault"'>
...
</catch>
</faulthandlers>
</scope>
詳細
属性または要素 | 説明 | 値 |
---|---|---|
fault 属性 | 必須項目。フォールトの名前。この値には、リテラル文字列または評価対象となる式を指定できます。 | 0 ~ 255 文字の文字列。式の場合は、この属性が含まれる <process> 要素で指定されているスクリプト言語を使用する必要があります。 |
name、disabled、xpos、ypos、xend、yend 属性 | "一般的な属性と要素" を参照してください。 | |
<annotation> 要素 | ||
その他の要素 | オプション。<catch> には、<alert>、<assign>、<branch>、<break>、<call>、<code>、<compensate>、<continue>、<delay>、<empty>、<foreach>、<if>、<label>、<milestone>、<reply>、<rule>、<scope>、<sequence>、<sql>、<switch>、<sync>、<throw>、<trace>、<transform>、<until>、<while>、<xpath>、および <xslt> をゼロ個以上、自由に組み合わせて使用できます。 |
説明
<throw> 文が実行されると、同じ <scope> 内にある <faulthandlers> ブロックに即座に制御が移り、<throw> 以降の途中の文はすべてスキップされます。次にプログラムは、<faulthandlers> ブロック内で、<throw> 文の fault 文字列式と value 属性が同じである <catch> ブロックを探します。この比較では大文字と小文字が区別されます。フォールト文字列を指定するときは、以下のように、1 組の引用符を余分に追加する必要があります。
<catch fault='"thrown"'/>
フォールトと一致する <catch> ブロックが見つかった場合は、その <catch> ブロック内のコードを実行して、<scope> から抜けます。終わりの </scope> 要素の次の文から実行を再開します。
フォールトが発生し、フォールト文字列に一致する <catch> ブロックが <faulthandlers> ブロック内に存在しない場合は、<throw> 文から、<faulthandlers> 内の <catchall> ブロックに制御が移ります。<catchall> ブロック内のコードを実行した後で、<scope> から抜けます。終わりの </scope> 要素の次の文から実行を再開します。予期しないエラーを確実にキャッチするため、すべての <faulthandlers> ブロック内に <catchall> ブロックを配置することをお勧めします。
詳細は、"BPL のエラー処理" を参照してください。
<catchall> を設ける場合は、<faulthandlers> ブロックの最後の文にする必要があります。必ず、<catchall> の前にすべての <catch> ブロックを配置します。
関連項目
<catchall>、<compensate>、<compensationhandlers>、<faulthandlers>、<scope>、<throw>