Запись сообщений в инструментах-скриптах
При запуске инструмента, в ArcPy доступна информация о том, из какого приложения он был вызван (например, из ArcMap или ArcCatalog). Как следствие, сообщения, написанные на 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).getOutput(0)) == 0:
arcpy.AddError("{0} has no features.".format(input))
raise arcpy.ExecuteError