地理处理过程中错误和警告信息由地理处理工具返回,形式为一个六位数代码和一条文本消息。 每个错误和警告在桌面帮助系统中都具有对应的描述页面。 该页面包含详细的错误描述以及针对该错误的可行解决方案。 工具对话框、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))