地理处理过程中错误和警告信息由地理处理工具返回,形式为一个六位数代码和一条文本消息。每个错误和警告在桌面帮助系统中都有对应的描述页面。该页面包含详细的错误描述以及针对该错误的可行解决方案。工具对话框、Python 窗口以及结果窗口中的 ID 代码是一个链接,用户单击该链接后会进入描述页面。
内部错误和历史日志文件
工具出现错误时,将显示标准错误代码和消息。某些情况下,伴随标准错误代码的可能还有内部系统错误。这些内部系统错误通常并不作为标准错误消息的一部分提供,因为它们往往对了解问题的帮助极小。但在某些情况下,这些消息可以为诊断错误原因和更正错误提供额外的线索。
要查看任何内部系统错误,必须先启用消息记录。单击工程选项卡,在选项面板中单击地理处理,然后选中将地理处理操作写入 XML 日志文件。有关激活日志文件的详细信息,请参阅将地理处理操作写入 XML 日志文件。
使用脚本和脚本工具编写标准错误和警告
通过 Python,可使用 AddWarning 和 AddError 函数编写自己的自定义错误和警告消息。但也可以使用 AddIDMessage 函数编写任何标准错误或警告消息。通过编写标准错误和警告,您就不再需要提供自己的文档 - 脚本用户可以阅读在桌面帮助中找到的错误描述和解决方案。
要编写标准错误或警告消息,必须先知道六位数代码。这就需要您执行一些探究工作;您必须搜索在桌面帮助中找到的描述以找出正确的六位数代码。在确定相应的代码之后,请对需要包含在消息中的附加信息做出注释,通常表示为 <value>。例如,代码 12 表示“<value> 已存在。” 在这种情况下,需要向 AddIDMessage() 的 {add_argument1} 参数提供一个值(即数据集名称)。
下面的 Python 示例可检查是否已提供一个要素类作为输入值;如果尚未提供,则使用 AddIDMessage() 返回代码 12 (000012: <value> 已存在)。可选参数用于将要素类名称代入到消息中。
class overwriteError(Exception):
pass
import arcpy
inFeatureClass = arcpy.GetParameterAsText(0)
outFeatureClass = arcpy.GetParameterAsText(1)
try:
# If the output feature class already exists, raise an error
if arcpy.Exists(inFeatureClass):
raise overwriteError(outFeatureClass)
else:
# Additional processing steps
except overwriteError as e:
# Use message ID 12, and provide the output feature class
# to complete the message.
arcpy.AddIDMessage("Error", 12, str(e))