Перейти к основному содержимому

BadEnd (выход при возникновении ошибки в проекте)

🔗 Оригинальная страница — Источник данного материала


BadEnd (выход при возникновении ошибки в проекте)

Описание

Если в каком-то из экшенов возникает ошибка или выход из кубика происходит по красной ветке, то выполнение проекта перейдёт в блок, который привязан к действию Bad End. Это необходимо для того, чтобы можно было задать какие-то дополнительные действия в случае завершения работы шаблона с ошибкой.

Как добавить действие в проект?

Через контекстное меню Добавить действиеЛогикаBadEnd

image-20200824-100554

Либо воспользуйтесь ❗→ умным поиском.

Для чего это используется?

При работе шаблона могут возникнуть непредвиденные ошибки, например:

  • Если изменилась верстка на сайте и шаблон теперь не может найти нужный HTML элемент
  • Не до конца продуманная логика шаблона, не предусматривающая определенные ситуации

Из-за этого проект не будет выполнен до конца и сразу завершит свою работу. Чтобы исключить такие ситуации, можно использовать Bad End для:

  • Возврата данных обратно в списки / таблицы для последующего их использования без потери.
  • Логирования ошибок
  • Добавления в Blacklist невалидной информации
  • Сохранения бэкапа

Как работать с экшеном?

В случае завершения шаблона ошибкой, выполнятся действия, привязанные к Bad End:

image-20211017-043256

Также, Bad End сработает при прерывании шаблона или по истечению глобального ❗→ таймаута выполнения. За это отвечает настройка в ZennoPoster - “❗→ Выполнять BadEnd при прерывании проекта“:

image-20200824-100812

Информация

Bad End срабатывает 1 раз для каждого потока.

Многократный переход в BadEnd при отладке проекта

По умолчанию, при отладке проект переходит в Bad/GoodEnd только один раз. Затем нужно перезапустить проект кнопкой “С начала”. Для возможности многократного перехода в эти экшены при отладке нужно включить опцию ❗→ Переходить в Bad/GoodEnd при многократной отладке в настройках программы.

Пример использования

Восстановление данных в случае ошибки

Например, для работы мы берём из списка строку с удалением. Если в процессе работы шаблон завершился с какой-либо ошибкой, до того, как мы обработали эту строку, то эти данные будут утеряны. Чтобы этого не произошло, используем Bad End и добавляем к нему действие добавления строки обратно в список. Таким образом при неудачном завершении работы необработанные данные будут сохранены назад в список для последующей обработки.

Как отследить и исправить ошибку?

Каждый шаг в шаблоне имеет уникальный идентификатор, по которому его можно найти в ProjectMaker'e. Для того чтобы получить id шага с ошибкой, необходимо в логах ZennoPoster, кликнуть по ошибке правой кнопкой мыши и нажать «*скопировать id действия»:

image-20200824-101926

Далее в ProjectMaker'e вызвать поиск (Ctrl + F), вставить полученный ID и нажать кнопку “Найти“. Программа выделит проблемный экшен синей рамкой:

image-20200824-100903

Либо воспользоваться опцией “Показать ошибочное действие в PM“, которое сразу откроет проект в ProjectMaker с выделенным действием, которое вызвало ошибку при выполнении:

image-20200824-101952

Но за всеми ошибками сложно уследить, поэтому мы рекомендуем логировать их в файл. Чтобы создать файл лога, в который запишется ошибка при выполнении проекта, необходимо после Bad End добавить кубик Записать в файл и вставить в него следующий текст:

{ -TimeNow.Date- } { -Project.LastExecutedActionId- }

image-20200806-004040

Теперь при возникновении ошибки в шаблоне, Bad End создаст файл log.txt, в который запишется время и ID ошибки. Если одного только идентификатора мало для устранения проблемы, Вы можете добавить сохранение ❗→ скриншота инстанса, ❗→ исходного кода страницы и ❗→ значения переменных. Это позволит максимально подробно восстановить картину, которая привела к ошибке, и внести необходимые правки для нормализации работы проекта.

Добавление в Blacklist невалидной информации

Можно создать список для хранения невалидной информации, приводящей к ошибкам. Например, неверный логин \ пароль к аккаунту. При последующей работе шаблона проверять наличие данных в Blacklist’e и в случае совпадения производить замену.

image-20200824-101219

Сохранения бэкапа

Сохранить рабочий профиль, чтобы в случае возникновения ошибки не потерять его. А после устранения проблемы загрузить его и продолжить работу.

image-20200824-101011

Полезные ссылки