スコープ内のフォルト・ハンドラの使用方法
フォルトが処理されていない場合、フォルト状態が作成されてアプリケーション全体に移行し、プロセス全体がフォルト状態になることがあります。これを防ぐには、フォルトを受け取る可能性があるプロセスの一部をスコープ内に配置します。scopeアクティビティには、次のフォルト処理機能が含まれています。
-
スコープ内ではcatchアクティビティが動作し、プロセス全体がフォルト状態になる前に、フォルトおよび例外を捕捉します。catchアクティビティで特定のフォルト名を使用し、個々のフォルトに特定の方法で対応できます。
-
catchAllアクティビティは、名前が指定されたcatchアクティビティでは処理されないフォルトを捕捉します。
次の例に、catchおよびcatchAllアクティビティの構文を示します。x:foo
という名前のフォルトがスローされたとします。フォルトがフォルト・データを渡さない場合は、最初のcatchが選択されます。フォルトに関連付けられたフォルト・データがある場合、フォルトのデータ・タイプが変数bar
タイプに一致すると、3番目のcatchが選択されます。そうでない場合、デフォルトのcatchAllハンドラが選択されます。最後に、タイプがbar
のタイプに一致し、名前がx:foo
でないフォルト変数を持つフォルトは2番目のcatchで処理されます。その他のすべてのフォルトはデフォルトのcatchAllハンドラによって処理されます。
<faulthandlers> <catch faultName="x:foo"> <empty/> </catch> <catch faultVariable="bar"> <empty/> </catch> <catch faultName="x:foo" faultVariable="bar"> <empty/> </catch> <catchAll> <empty/> </catchAll> </faulthandlers>