Power Automate: чтение журнала выполнений и поиск ошибок
Как правильно читать журнал выполнений в Power Automate и находить причину неудачного выполнения.
Паттерн Try-Catch в Power Automate: с помощью областей (scopes) и Configure run after контролируемо перехватывайте, протоколируйте и сообщайте об ошибках.
Сбой посреди flow неприятен, а сбой, который никто не замечает, — опасен. В Power Automate нет встроенного Try-Catch, как в классических языках программирования, но с помощью комбинации областей (Scopes) и настройки Configure run after ты можешь построить именно такой паттерн самостоятельно. В результате получается flow, который при ошибке не просто обрывается, а реагирует контролируемо, протоколирует ошибку и при необходимости сообщает о ней.
В этой статье мы шаг за шагом покажем, как строить области Try, Catch и Finally, как правильно настроить для них условия выполнения после (run-after) и как при ошибке добраться до самого текста ошибки. Основу для этого дает официальная документация Microsoft, а именно руководство по надежной обработке ошибок и обзор областей в облачных flow.
В языках программирования исключение перехватывается блоком Try-Catch: код выполняется в части Try, а при ошибке управление автоматически переходит в часть Catch. Power Automate работает иначе: у каждого действия есть условие выполнения после (run-after), которое по умолчанию установлено на «выполнено успешно». Если предыдущее действие завершается ошибкой, следующее действие просто пропускается, и весь flow прерывается, если ты не настроишь иначе.
Именно здесь и вступает в игру паттерн Try-Catch: ты группируешь свою основную логику в области (Scope), добавляешь вторую область для обработки ошибок и настраиваешь ее условие выполнения после так, чтобы она запускалась только при ошибке в первой области. Так ты получаешь структурно то же поведение, что и Try-Catch, только настроенное через интерфейс, а не через код.
Для полноценного паттерна обработки ошибок ты создаешь три области подряд:
Каждую область ты добавляешь через Добавить действие и поиск «Область», подробно описано в руководстве Создание и использование областей. Обязательно давай областям осмысленные имена: «Try», «Catch» и «Finally» понятны с первого взгляда и делают flow читаемым и для коллег, которые позже возьмут его в работу.
Вот как настроить условие выполнения после для области Catch:
Таким образом область Catch запускается только тогда, когда область Try завершается не совсем гладко. Для области Finally ты действуешь так же, но устанавливаешь все четыре флажка, включая «выполнено успешно». Так эта область выполняется в любом случае, независимо от того, чем закончилась область Try. Важно: хотя бы один флажок всегда должен оставаться активным — полностью пустым условие сохранить нельзя.
Область Catch, которая знает лишь, что что-то пошло не так, но не знает что именно, мало помогает в поиске причины. Чтобы получить конкретное сообщение об ошибке, ты используешь в области Catch действие Фильтр массива в сочетании с функцией выражения result(), которая возвращает статус и вывод предыдущих действий. Из этого отфильтрованного ответа ты извлекаешь код и текст ошибки и помещаешь их, например, в действие Создать HTML-таблицу, которое ты отправляешь по электронной почте или сохраняешь в списке журнала ошибок в SharePoint или Dataverse.
Кроме того, функция workflow() предоставляет метаданные о текущем запуске flow, например ID среды и flow. В сочетании с действием Составить ты можешь построить из этого прямую ссылку на неудачный запуск, которую вставляешь в уведомление. Таким образом, в почтовый ящик попадает не просто информация «произошла ошибка», а сразу путь к тому месту, где ты можешь ее устранить.
Если ты хочешь надежно встроить этот паттерн в более крупный продуктивный flow или не уверен, где именно в твоем процессе действительно нужна область Catch, тебе поможет консалтинг NordFlux по Power Automate. При этом ты сохраняешь полный контроль над своим flow и своими данными, мы лишь помогаем с грамотным построением.
Технически нет, функционально — да. В Power Automate нет встроенной концепции исключений, при которой действие автоматически переходит на путь обработки ошибки. Но с помощью условия выполнения после для области ты достигаешь того же поведения: область Catch запускается только тогда, когда область Try завершается ошибкой, точно так же, как блок catch при исключении.
Нет. Если ты группируешь свои действия в области Try, достаточно одной настройки Configure run after для всей области целиком, вместо того чтобы защищать каждое действие по отдельности. Именно это одно из практических преимуществ областей по сравнению с множеством отдельных условий выполнения после на уровне действий.
Тогда область Catch будет запускаться и в том случае, если область Try завершилась успешно, что противоречит смыслу пути обработки ошибок. Для настоящей области Catch последовательно снимай флажок с «выполнено успешно» и включай только «завершилось ошибкой», «пропущено» и «истекло время ожидания».
Да, эти два механизма хорошо дополняют друг друга. Политика повторов в настройках действия сначала пытается автоматически повторно выполнить временно неудавшееся действие, в идеале с экспоненциально растущими интервалами. Только если действие завершается ошибкой и после всех повторов, вступает в силу твоя область Catch через условие выполнения после.
Открой соответствующий запуск flow в журнале выполнения и разверни там неудавшуюся область. Поскольку область сообщает наружу только один совокупный статус, конкретное сообщение об ошибке вместе с красной пометкой ты увидишь только на уровне отдельного действия внутри области.
Основатель NordFlux. Семь лет опыта, от веба и SEO до автоматизации в масштабах концерна, сегодня прагматично для среднего бизнеса и с немецким суверенитетом данных.
Сертификаты
Как правильно читать журнал выполнений в Power Automate и находить причину неудачного выполнения.
Почему Power Automate выдает ошибку 429 и как целенаправленно устранить throttling с помощью контроля параллелизма и пакетной обработки.
Configure run after выглядит просто на первый взгляд, но на практике многие схемы Try-Catch спотыкаются на деталях вроде блока finally или корректного считывания ошибки. NordFlux встраивает в ваши флоу надёжную обработку ошибок, которая корректно реагирует даже на неожиданные сбои.