Fehlerbehandlung in Skriptwerkzeugen

Die Grundlagen für die Behandlung von Python-Fehlern zu behandeln, werden im Thema Fehlerbehandlung mit Python behandelt. Das Python.org-Dokument Fehler und den Ausnahmen enthält detailliertere Informationen.

Abrufen von Fehlermeldungen aus einem Ergebnisobjekt

Eine kurze Anmerkung zum unten dargestellten Ergebnisobjekt:

result = arcpy.GetCount_management("c:/data/rivers.shp")

Wenn der Aufruf zu GetCount eine Ausnahme auslöst, wird das Ergebnisobjekt auf Null gesetzt. Dies bedeutet, dass Sie keine Fehlermeldungen aus dem Ergebnisobjekt abrufen können.

import arcpy
try:
    result = arcpy.GetCount_management("c:/data/rivers.shp")

# Return GEOPROCESSING specific errors
# (this method is INCORRECT!)
except:
    arcpy.AddError(result.getMessages(2))

Der oben gezeigte Code schlägt fehl und es wird die Meldung "Name 'Ergebnis' ist nicht definiert" angezeigt. Das liegt daran, dass das Ergebnisobjekt aufgrund des fehlgeschlagenen Werkzeugs nicht erstellt werden konnte. Da das Ergebnisobjekt nicht erstellt wird, wird beim Versuch, die getMessages-Methode zu verwenden, ein Python-Fehler ausgelöst.

HinweisHinweis:

Ein Ergebnisobjekt, das durch den Aufruf eines Geoverarbeitungs-Services auf ArcGIS Server erstellt wurde, wird auch bei Fehlschlagen eines Werkzeugs erstellt. Ein Ergebnisobjekt wird nur dann nicht erstellt, wenn ein Werkzeug lokal ausgeführt wird und einen Fehler auslöst. Weitere Informationen zur Verwendung des Ergebnisobjekts finden Sie im Abschnitt Abrufen von Ergebnissen aus einem Geoverarbeitungswerkzeug.

Verwenden von AddReturnMessage, um Links zu Fehlercodes beizubehalten

Im Statusdialogfeldfeld angezeigte Geoverarbeitungsfehlernummern sind Hyperlinks zu einer Hilfeseite, in der der Fehler genauer beschrieben wird. Um Hyperlinks für Fehler im Skript zu aktivieren, verwenden Sie statt der Funktion AddError die Funktion AddReturnMessage wie folgt:

import arcpy
try:    
    result = arcpy.GetCount_management("c:/data/rivers.shp")

except:    
    # Return Geoprocessing tool specific errors
    #
    for msg in range(0, arcpy.GetMessageCount()):
        if arcpy.GetSeverity(msg) == 2:
            arcpy.AddReturnMessage(msg)

7/10/2012