Понимание сообщений об ошибках и предупреждений инструментов геообработки

Ошибки и предупреждения возвращаются инструментами геообработки в виде шестизначного кода и текстового сообщения. Для каждого сообщения об ошибке и предупреждения существует страница описания в Справочной системе. На этой странице содержится подробное описание ошибки и возможный способ исправления. В диалоговых окнах инструментов, окне Python и окне Результаты код ID представляет собой ссылку, если щёлкнуть на которую, вы попадаете на страницу описания.

Внутренние ошибки и файлы журналов истории

Если инструмент генерирует сообщение об ошибке, отображается стандартный код ошибки и сообщение. В некоторых случаях могут возникать внутренние системные ошибки, со стандартным кодом ошибки. Эти внутренние системные ошибки обычно не предоставляются как часть стандартного сообщения об ошибке, так как они скорее всего мало помогут в понимании проблемы. Но в определенных случаях такие сообщения могут предоставить дополнительные директивы к сообщениям, связанными с причиной ошибки.

Для просмотра внутренних системных ошибок вам над сначала активизировать запись журналов сообщений. Щёлкните Геообработка (Geoprocessing) > Опции геообработки (Geoprocessing Options) и отметьте Хранить операции геообработки в файле журнала (Log geoprocessing operations to a log file). Более подробно об активации файла журнала и как его читать см. Файл журнала (History log files)

Запись стандартных ошибок и предупреждений в скрипты и инструменты-скрипты

В Python у вас есть возможность записать собственные сообщения об ошибках и предупреждения с помощью функций AddWarning и AddError. Но можно написать и любое стандартное сообщение об ошибке или предупреждение с помощью функции AddIDMessage. Написав стандартное сообщение об ошибке или предупреждение, вы освобождаете себя от необходимости предоставлять собственную документацию — пользователи скриптов смогут прочитать описания ошибок и пути их решения в основной справочной системе.

Чтобы написать стандартное сообщение об ошибке или предупреждение, вы должны знать его шестизначный код. Вам надо будет приложить некоторые усилия, читая описания ошибок в справочной системе, чтобы найти нужный шестизначный код. Отыскав подходящий код, пометьте всю нужную дополнительную информацию, которая обычно выглядит как <значение>. Например, код 12 это «<значение> уже существует». In this case, you will need to provide a value (that is, the name of the dataset) to the {add_argument1} parameter of AddIDMessage().

Приведенный ниже пример на языке Python проверяет, существует ли указанный входной класс пространственных объектов, и если нет, то использует AddIDMessage(), чтобы вернуть код 12 (000012: <значение> уже существует). Дополнительный аргумент используется для подстановки имени класса пространственных объектов в текст сообщения.

class overwriteError(Exception):
    pass

import arcpy
import sys

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))
9/11/2013