<scope>
一連のアクティビティのエラー処理手段を定義します。
構文
<scope>
<throw fault='"MyFault"'/>
...
<faulthandlers>
<catch fault='"MyFault"'>
...
</catch>
</faulthandlers>
</scope>
詳細
属性または要素 | 説明 |
---|---|
name、disabled、xpos、ypos、xend、yend 属性 | "一般的な属性と要素" を参照してください。 |
<annotation> 要素 | |
その他の要素 | オプション。<scope> には、<alert>、<assign>、<branch>、<break>、<call>、<code>、<continue>、<delay>、<empty>、<flow>、<foreach>、<if>、<label>、<milestone>、<reply>、<rule>、<scope>、<sequence>、<sql>、<switch>、<sync>、<throw>、<trace>、<transform>、<until>、<while>、<xpath>、および <xslt> をゼロ個以上、自由に組み合わせて使用できます。 |
説明
エラー処理に対応するため、BPL には <scope> と呼ばれる要素があります。スコープは一連のアクティビティのラッパです。このスコープには、1 つ以上のアクティビティ、1 つ以上のフォールト・ハンドラ、ゼロ個以上の補償ハンドラを含めることができます。フォールト・ハンドラの目的は、<scope> 内のアクティビティによって生成されるすべてのエラーをキャッチすることです。また、補償ハンドラを呼び出して、発生したエラーに対処することもできます。
以下の例では、<scope> 内に <faulthandlers> ブロックを配置し、さらに <catchall> を追加しています。
XData BPL
{
<process language='objectscript'
request='Test.Scope.Request'
response='Test.Scope.Response' >
<sequence>
<trace value='"before scope"'/>
<scope>
<trace value='"before assign"'/>
<assign property="SomeProperty" value="1/0"/>
<trace value='"after assign"'/>
<faulthandlers>
<catchall>
<trace value='"in catchall faulthandler"'/>
<trace value=
'"%LastError "_
$System.Status.GetErrorCodes(..%Context.%LastError)_
" : "_
$System.Status.GetOneStatusText(..%Context.%LastError)'
/>
</catchall>
</faulthandlers>
</scope>
<trace value='"after scope"'/>
</sequence>
</process>
}
<scope> 内に <faulthandlers> ブロックがない場合は、システム・エラーがイベント・ログに自動的に出力されます。<scope> に <faulthandlers> ブロックが含まれている場合は、<trace> メッセージをイベント・ログに出力し、システム・エラー・メッセージがイベント・ログに表示されるようにする必要があります。いずれの場合も、システム・エラー・メッセージがターミナル・コンソールに表示されます。
<scope> 要素をネスト構造にできます。内側のスコープでエラーやフォールトが発生した場合、内側のスコープ内でキャッチする方法と、内側のスコープはそのエラーを無視し、外側スコープの <faulthandlers> ブロックでキャッチする方法があります。
詳細は、"BPL のエラー処理" を参照してください。
関連項目
<catch>、<catchall>、<compensate>、<compensationhandlers>、<faulthandlers>、<throw>