При запуске инструмента в ArcPy доступна информация о том, из какого приложения он был вызван. Как следствие, сообщения, написанные на Python, будут автоматически появляться на диалоговом окне индикатора выполнения, в окне Результаты (Results) для инструмента и на окне Python. Это также означает, что любая модель или инструмент-скрипт, вызывающие ваш инструмент-скрипт, получают доступ к созданным вами сообщениям.
Подробнее о составлении сообщений вы можете узнать в разделе Понятие сообщений в инструментах-скриптах
Во время выполнения инструмента происходит запись сообщений, которые затем можно извлечь с помощью функций геообработки. Доступны четыре функции записи сообщений ArcPy:
- AddMessage(message) – Обычные информационные сообщения (опасность = 0)
- AddWarning(message) – Сообщения с предупреждением (важность = 1)
- AddError(message) – Сообщения об ошибке (важность = 2)
- AddIDMessage(message_type, message_ID, add_argument1, add_argument2) – Используется для ошибок и сообщений (аргумент message_type определяет важность).
При вызове функции AddIDMessage() отображается короткое сообщение и ID сообщения, представляющий собой ссылку на текст с объяснением причины возникшей проблемы и указанием способов ее решения. При добавлении сообщения об ошибке с использованием функции AddError() или AddIDMessage() происходит следующее:
- Выполнение скрипта продолжается. По желанию можно добавить соответствующую логику обработки ошибок и остановить выполнение скрипта. Например, может потребоваться удалить промежуточные файлы или курсоры.
- При возврате из скрипта вызывающий скрипт или модель получает системную ошибку, и выполнение прекращается.
Пример добавления сообщений
В приведенном ниже примере выполняется оценка входных данных и, если они не содержат входных объектов, в инструмент добавляется сообщение об ошибке, и вызывается исключение arcpy.ExecuteError для завершения выполнения инструмента.
import arcpy
input = arcpy.GetParameterAsText(0)
output = arcpy.GetParameterAsText(0)
# If the input has no features, add an error message, and raise
# an arcpy.ExecuteError
if int(arcpy.GetCount_management(input)[0]) == 0:
arcpy.AddError("{0} has no features.".format(input))
raise arcpy.ExecuteError