Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

<scope>

一連のアクティビティのエラー処理手段を定義します。

Synopsis

<scope>   <throw fault='"MyFault"'/>         ...   <faulthandlers>     <catch fault='"MyFault"'>           ...     </catch>   </faulthandlers> </scope>

詳細

属性または要素 説明
namedisabledxposyposxendyend 属性 一般的な属性と要素” を参照してください。
<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 プロセスの開発" の “BPL エラー処理規則” を参照してください。

関連項目

<catch><catchall><compensate><compensationhandlers><faulthandlers><throw>

FeedbackOpens in a new tab