BadEnd (выход при возникновении ошибки в проекте)
Пожалуйста, ознакомьтесь с Правилами использования материалов на данном ресурсе
Описание
Если в каком-то из экшенов возникает ошибка или выход из кубика происходит по красной ветке, то выполнение проекта перейдёт в блок, который привязан к действию Bad End. Это необходимо для того, чтобы можно было задать какие-то дополнительные действия в случае завершения работы шаблона с ошибкой.
Как добавить действие в проект?
Через контекстное меню Добавить действие → Логика → BadEnd
Либо воспользуйтесь умным поиском.
Для чего это используется?
При работе шаблона могут возникнуть непредвиденные ошибки, например:
Если изменилась верстка на сайте и шаблон теперь не может найти нужный HTML элемент
Не до конца продуманная логика шаблона, не предусматривающая определенные ситуации
Из-за этого проект не будет выполнен до конца и сразу завершит свою работу. Чтобы исключить такие ситуации, можно использовать Bad End для:
Возврата данных обратно в списки / таблицы для последующего их использования без потери.
Логирования ошибок
Добавления в Blacklist невалидной информации
Сохранения бэкапа
Как работать с экшеном?
В случае завершения шаблона ошибкой, выполнятся действия, привязанные к Bad End:
Также, Bad End сработает при прерывании шаблона или по истечению глобального таймаута выполнения. За это отвечает настройка в ZennoPoster - “Выполнять BadEnd при прерывании проекта“:
Bad End срабатывает 1 раз для каждого потока.
Многократный переход в BadEnd при отладке проекта
По умолчанию, при отладке проект переходит в Bad/GoodEnd только один раз. Затем нужно перезапустить проект кнопкой “С начала”.
Для возможности многократного перехода в эти экшены при отладке нужно включить опцию Переходить в Bad/GoodEnd при многократной отладке в настройках программы.
Пример использования
Восстановление данных в случае ошибки
Например, для работы мы берём из списка строку с удалением. Если в процессе работы шаблон завершился с какой-либо ошибкой, до того, как мы обработали эту строку, то эти данные будут утеряны. Чтобы этого не произошло, используем Bad End и добавляем к нему действие добавления строки обратно в список. Таким образом при неудачном завершении работы необработанные данные будут сохранены назад в список для последующей обработки.
Как отследить и исправить ошибку?
Каждый шаг в шаблоне имеет уникальный идентификатор, по которому его можно найти в ProjectMaker'e. Для того чтобы получить id шага с ошибкой, необходимо в логах ZennoPoster, кликнуть по ошибке правой кнопкой мыши и нажать «скопировать id действия»:
Далее в ProjectMaker'e вызвать поиск (Ctrl + F), вставить полученный ID и нажать кнопку “Найти“. Программа выделит проблемный экшен синей рамкой:
Либо воспользоваться опцией “Показать ошибочное действие в PM“, которое сразу откроет проект в ProjectMaker с выделенным действием, которое вызвало ошибку при выполнении:
Но за всеми ошибками сложно уследить, поэтому мы рекомендуем логировать их в файл. Чтобы создать файл лога, в который запишется ошибка при выполнении проекта, необходимо после Bad End добавить кубик Записать в файл и вставить в него следующий текст:
{-TimeNow.Date-} {-Project.LastExecutedActionId-}
Теперь при возникновении ошибки в шаблоне, Bad End создаст файл log.txt, в который запишется время и ID ошибки. Если одного только идентификатора мало для устранения проблемы, Вы можете добавить сохранение скриншота инстанса, исходного кода страницы и значения переменных. Это позволит максимально подробно восстановить картину, которая привела к ошибке, и внести необходимые правки для нормализации работы проекта.
Добавление в Blacklist невалидной информации
Можно создать список для хранения невалидной информации, приводящей к ошибкам. Например, неверный логин \ пароль к аккаунту. При последующей работе шаблона проверять наличие данных в Blacklist’e и в случае совпадения производить замену.
Сохранения бэкапа
Сохранить рабочий профиль, чтобы в случае возникновения ошибки не потерять его. А после устранения проблемы загрузить его и продолжить работу.
Полезные ссылки