Lorsqu'un outil est exécuté, ArcPy reconnaît l'application à partir de laquelle il est appelé. Vous pouvez alors écrire des messages dans Python et ceux-ci s'affichent automatiquement dans la boîte de dialogue de progression, le résultat de l'outil dans la fenêtre Résultats, et la fenêtre Python. Cela signifie également que tout modèle ou outil de script qui appelle votre outil a accès aux messages que vous écrivez.
Pour en savoir plus sur la messagerie, reportez-vous à la rubrique Fonctionnement des messages dans les outils de script.
Pendant l'exécution d'un outil, des messages sont écrits qui peuvent être récupérés grâce à des fonctions de géotraitement. Voici les quatre fonctions ArcPy d'écriture de messages :
- AddMessage(message) : pour les messages d'information générale (gravité = 0)
- AddWarning(message) : pour les message d'avertissement (gravité = 1)
- AddError(message) : pour les messages d'erreur (gravité = 2)
- AddIDMessage(message_type, message_ID, add_argument1, add_argument2) : pour les messages d'erreur et d'avertissement (l'argument message_type détermine la gravité.)
En appelant la commande AddIDMessage(), vous affichez un court message, ainsi que son ID, qui représente un lien vers une explication sur l'origine du problème et les solutions possibles. Lorsque vous ajoutez un message d'erreur en utilisant AddError() ou AddIDMessage() :
- Votre script poursuit son exécution. Il vous appartient d'ajouter la logique de gestion des erreurs appropriée et d'interrompre l'exécution de votre script. Par exemple, il se peut que vous deviez supprimer des fichiers intermédiaires ou des curseurs.
- Lors du renvoi de votre script, le modèle ou le script qui appelle reçoit une erreur système et l'exécution s'interrompt.
Exemple d'ajout de messages
Dans l'exemple ci-dessous, l'entrée est évaluée, et si elle ne contient pas d'entités en entrée, un message d'erreur est ajouté à l'outil et une exception arcpy.ExecuteError est déclenchée pour fermer l'outil.
import arcpy
input = arcpy.GetParameterAsText(0)
output = arcpy.GetParameterAsText(0)
# If the input has no features, add an error message, and raise
# an arcpy.ExecuteError
if int(arcpy.GetCount_management(input)[0]) == 0:
arcpy.AddError("{0} has no features.".format(input))
raise arcpy.ExecuteError