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

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

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

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

Для просмотра внутренних системных ошибок вам над сначала активизировать запись журналов сообщений. Щелкните вкладку Проект на панели Опции, выберите Геообработка, а затем поставьте отметку Записать операции геообработки в файл журнала XML. Подробнее об активации файла журнала см. в разделе Запись операций геообработки в файл журнала XML.

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

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

Чтобы написать стандартное сообщение об ошибке или предупреждение, вы должны знать его шестизначный код. Вам надо будет приложить некоторые усилия, читая описания ошибок в справочной системе, чтобы найти нужный шестизначный код. Отыскав подходящий код, пометьте всю нужную дополнительную информацию, которая обычно выглядит как <значение>. Например, код 12 это «<значение> уже существует». В этом случае вам понадобится указать значение (то есть имя набора данных) для параметра {add_argument1} AddIDMessage().

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

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