Wenn ein Werkzeug ausgeführt wird, kennt ArcPy die Anwendung, in der es aufgerufen wurde. Dies hat einen großen Vorteil: Sie können Meldungen in Python schreiben, die dann automatisch im Verlaufsdialogfeld, in den Werkzeugergebnissen sowie in den Fenstern Ergebnisse und Python angezeigt werden. Außerdem haben in diesem Fall auch alle Modelle und Skriptwerkzeuge, die Ihr Skriptwerkzeug aufrufen, Zugang zu den von Ihnen ausgegebenen Meldungen.
Weitere Informationen zu Meldungen finden Sie unter Meldungen in Skriptwerkzeugen.
Während der Ausführung eines Werkzeugs werden Meldungen geschrieben, die mit Geoverarbeitungsfunktionen abgerufen werden können. Es gibt vier ArcPy-Funktionen für das Schreiben von Meldungen:
- AddMessage(message) – Für allgemeine Informationsmeldungen (Schweregrad = 0)
- AddWarning(message) – Für Warnmeldungen (Schweregrad = 1)
- AddError(message) – Fehlermeldungen (Schweregrad = 2)
- AddIDMessage(message_type, message_ID, add_argument1, add_argument2) – Für Fehler- und Warnmeldungen (der Schweregrad wird durch das Argument message_type vorgegeben.)
Bei einem Aufruf von AddIDMessage() wird eine kurze Meldung angezeigt. Die Meldungs-ID ist ein Link zu einer Erläuterung der Ursache des Problems mit Lösungsvorschlägen. Wenn Sie eine Fehlermeldung mit AddError() oder AddIDMessage() hinzufügen, geschieht Folgendes:
- Die Skriptausführung wird fortgesetzt. Sie müssen die entsprechende Logik für die Fehlerverarbeitung hinzufügen und die Ausführung des Skripts stoppen. So müssen Sie eventuell Zwischendateien oder -cursor löschen.
- Nach der Rückkehr aus Ihrem Skript geht beim aufrufenden Skript oder Modell ein Systemfehler ein und die Ausführung wird gestoppt.
Beispiel für das Hinzufügen von Meldungen
Im folgenden Beispiel wird die Eingabe ausgewertet. Wenn sie keine Eingabe-Features enthält, wird dem Werkzeug eine Fehlermeldung hinzugefügt und eine arcpy.ExecuteError-Ausnahme ausgelöst, um das Werkzeug zu beenden.
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