Verwendung von Try/Catch/Throw-Ausnahmen
Wir haben die Aktionen Try/Catch und Throw verwendet, um eine Warnung anzuzeigen, wenn die Standortkoordinaten einen Ort außerhalb der USA beschreiben. Diese Aktionen werden ausgeführt, wenn der Benutzer auf die Schaltfläche Try/Catch/Throw klickt (siehe Abbildung unten).
Die Aktionen "Try/Catch/Throw"
Doppelklicken Sie im Design auf das Aktionsdialogfeldsymbol links oben auf der Schaltfläche Try/Catch/Throw, um das Aktionsdialogfeld für diese Schaltfläche zu öffnen (Abbildung unten).
Es wurden die folgenden Aktionen definiert:
1.Eine Try/Catch-Aktion wurde hinzugefügt.
2.Wir haben eine Variable $Not-USA-Warning definiert, die die Meldung für die Ausnahme enthalten soll.
3.Im Try-Teil wird eine Bedingung definiert, mit der überprüft wird, ob sich der Standort nicht in den USA befindet. Diese Bedingung ist im XPath-Ausdruck einer Throw-Aktion definiert. Wenn die Bedingung "true" ist, wird eine Ausnahme ausgelöst. Die Ausnahmemeldung wird in der Variablen $Not-USA-Warning gespeichert. Wenn die Bedingung "false" ist, wird keine Ausnahme ausgelöst; wir generieren die leere Sequenz, sodass nichts in der Variablen $Not-USA-Warning gespeichert wird. Unten finden Sie eine Beschreibung des XPath-Ausdrucks, den wir zu diesem Zweck verwendet haben.
4.Der Catch-Teil der Try/Catch-Aktion wird nur verarbeitet, wenn eine Ausnahme ausgelöst wird (d.h. nur dann, wenn die oben überprüfte Bedingung "true" ergibt). Im Catch-Teil wird ein Meldungsfeld angezeigt, in dem der Inhalt der Variablen $Not-USA-Warning angezeigt wird.
XPath-Ausdruck der Throw-Aktion
Der XPath-Ausdruck der Throw-Aktion lautet folgendermaßen:
if ($MT_GEOLOCATION/Root/Address/@CountryName != 'USA')
then (concat( 'Warning: Device location is outside the US: ', $MT_GEOLOCATION/Root/Address/@CountryName))
else ()
Dieser Ausdruck funktioniert folgendermaßen:
•Die if-Klausel überprüft, ob der Wert des Node $MT_GEOLOCATION/Root/Address/@CountryName nicht 'USA' ist.
•Die then-Klausel wird verarbeitet, wenn der Name des Landes nicht USA ist. Mit dieser Klausel wird ein String generiert.
•Die else-Klausel wird verarbeitet, wenn der Name des Landes USA ist. Mit dieser Klausel wird eine leere Sequenz erzeugt.
Wenn das Land, in dem sich der Standort befindet, nicht USA ist, so ist die Bedingung true und der Ausdruck wird zu dem durch die then-Klausel generierten String ausgewertet. Da es sich bei diesem Ergebnis nicht um eine leere Sequenz handelt, wird eine Ausnahme ausgelöst und der generierte String wird in der Try/Catch-Variablen $Not-USA-Warning gespeichert.
Wenn das Land, in dem sich der Standort befindet, jedoch USA, ist, so ist die Bedingung false und das Ergebnis des Ausdrucks ist eine (durch die else-Klausel generierte) leere Sequenz. Da es sich beim Ergebnis um eine leere Sequenz handelt, wird keine Ausnahme ausgelöst. Daher wird der Catch-Teil der Try/Catch-Aktion nicht ausgeführt.