Try/Catch/Throw 例外の使用

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  チュートリアル > 位置情報の共有 >

Try/Catch/Throw 例外の使用

米国外の場所の位置情報の座標の場合、警告を表示するために トライ/キャッチスロー アクションを使用しました。これらのアクションは [Try/Catch/Throw] ボタンがクリックされると実行されます (下のスクリーンショット参照)。

MTDTutGeolocTryCatchThrowBtn

 

Try/Catch/Throw アクション

デザイン内の [Try/Catch/Throw] ボタンの左上にあるアクションダイアログアイコンをダブルクリックして、ボタンのアクションダイアログを開きます (下のスクリーンショット)。

MTDTutGeolocTryCatchThrow

アクションは以下のように定義されています:

 

1.トライ/キャッチ アクションが追加されました。
2.例外メッセージを保留する変数 $Not-USA-Warning が設定されました。
3.トライ パートは、位置情報が USA でないかをテストする条件をセットアップします。 この条件は、 スロー アクションの XPath 式内で指定されています。条件が true の場合、例外がスローされます。 例外メッセージは、 $Not-USA-Warning 変数に保管されます。条件が false の場合、例外はスローされません。空のシーケンスが生成され、 $Not-USA-Warning 変数内には何も保管されません。 XPath 式の詳細は下で説明されています。
4.トライ/キャッチ アクションの キャッチ パートは、例外がスローされた場合のみ処理されます。 (これは、テストされた上記の条件が true を評価した場合のみです)。キャッチ パート内では、 $Not-USA-Warning 変数のコンテンツを表示するメッセージボックスを表示します。

 

アクションの XPath 式

スロー アクショの XPath 式は、以下のとおりです:

 

if ($MT_GEOLOCATION/Root/Address/@CountryName != 'USA'

then (concat'Warning: Device location is outside the US: '$MT_GEOLOCATION/Root/Address/@CountryName)) 

else ()

 

この式は以下のように動作します:

 

if 句 は、 $MT_GEOLOCATION/Root/Address/@CountryName ノードの値が 'USA'でないかをチェックします。
then 句 は、国名が'USA'でない場合、処理されます。この句は文字列を生成します。
else 句 は、国名が'USA'である場合、処理されます。 この句は空のシーケンスを生成します。

 

位置情報の国が、'USA'でない場合、条件は true で、式はこの thenにより生成された文字列を評価します。 この結果は空のシーケンスではないため、例外がスローされ、生成された文字列は トライ/キャッチ 変数 $Not-USA-Warning 内に保管されます。

 

位置情報の国が、'USA'である場合、条件は false で、(else 句により生成された)式は空のシーケンスを評価します。結果が空のシーケンスであるため、例外はスローされません。ですから、 トライ/キャッチ アクション の キャッチ パートは実行されません。

 


(C) 2019 Altova GmbH