使用脚本工具处理错误

使用 Python 处理错误主题中涵盖了处理 Python 错误的基础知识。Python.org 文档错误和异常包含更详细的信息。

从结果对象获取错误消息

有关结果对象的快速表达如下所示:

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

如果调用 GetCount 引发了异常,则结果对象为空。这表示无法从结果对象中检索错误消息。

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))

上述代码失败,并显示消息“未定义名称‘result’”。这是由于结果对象因工具失败而无法进行创建。因为未创建结果对象,因此会在尝试使用 getMessages 方法时引发 Python 错误。

注注:

即使在工具失败的情况下,也会创建通过调用 ArcGIS Server 上的地理处理服务所创建的结果对象。仅当工具在本地运行且引发错误时,创建结果对象才会失败。有关使用结果对象的详细信息,请参阅从地理处理工具获取结果

使用 AddReturnMessage 保留指向错误代码的链接

进度对话框中显示的地理处理错误编号为指向用于进一步说明错误的帮助页面的超链接。要启用脚本中的错误的超链接,请使用 AddReturnMessage 函数,而不是 AddError 函数,如下所示:

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