Altova MobileTogether Designer

Utiliser les exceptions Try/Catch/Throw

Accueil Préc Haut Suivant

Nous avons utilisé les actions Try/Catch et Throw pour afficher un avertissement si les coordonnées de géolocalisation décrivent un emplacement situé en-dehors des USA. Ces actions sont exécutées lorsque le bouton Try/Catch/Throw est cliqué (voir capture d'écran ci-dessous).

MTDTutGeolocTryCatchThrowBtn

 

Les actions Try/Catch/Throw

Dans le design, double-cliquer sur l'icône de dialogue Actions situé en haut à gauche du dialogue d'actions du bouton Try/Catch/Throw pour ouvrir le dialogue Actions du bouton (capture d'écran ci-dessous).

MTDTutGeolocTryCatchThrow

Les actions ont été définies comme suit :

 

1.Une action Try/Catch a été ajoutée.

2.Nous avons défini une variable \$Not-USA-Warning qui sera utilisée pour contenir le message d'exception.

3.La partie Try définit une condition pour tester si la géolocalisation ne se trouve pas aux USA. Cette condition est spécifiée dans l'expression XPath d'une action Throw. Si la condition est vraie, une exception est lancée. Le message d'exception sera stocké dans la variable \$Not-USA-Warning. Si la condition est fausse, aucune exception ne sera lancée ; nous générons la séquence vide afin que rien ne soit stocké dans la variable \$Not-USA-Warning. Une description de l'expression XPath est donnée ci-dessous.

4.La partie Catch de l'action Try/Catch est traitée uniquement si une exception est lancée (c. à. d. uniquement si la condition testée ci-dessus évalue à true). Dans la partie Catch, nous affichons une fenêtre de message qui montre le contenu de la variable \$Not-USA-Warning.

 

Expression XPath de l'action Throw

L'expression XPath de l'action Throw est :

 

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

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

else ()

 

Cette expression fonctionne comme suit :

 

La clause if contrôle si la valeur du nœud \$GEOLOCATION/Root/Address/@CountryName n'est pas 'USA'.

La clause then est traitée si le nom du pays n'est pas USA. Cette clause génère une chaîne.

La clause else est traitée si le nom du pays est USA. Elle produit une séquence vide

 

Si le pays de géolocalisation n'est pas USA, la condition est true et l'expression évalue à la chaîne générée par la clause then. Puisque ce résultat n'est pas une séquence vide, une exception est lancée et la chaîne générée est stockée dans la variable Try/Catch \$Not-USA-Warning.

 

Si le pays est USA, alors la condition est false et l'expression évalue à une séquence vide (générée par la clause else). Étant donné que le résultat est une séquence vide, aucune exception n'est lancée. C'est pourquoi la partie Catch de l'action Try/Catch n'est pas exécutée.

 

© 2017-2023 Altova GmbH