@morpheus93 Можешь пожалуйста поделиться авторизатором?
Универсальное решение по обработке ошибок BAS?
-
@UserTrue странно, но эту асинхронность сгенерил сам BAS, на скриншоте выше там оригинал того что я экспортировал в модуль.
Так и планирую оборачивать группами которые взаимосвязаны, просто я уже +- нашел все методы для работы через Код, и для организации такой работы мне ведь и в коде нужно как-то игнорировать ошибки и их обрабатывать ) потому стало интересно как это делают собраться, кто работает с БАС через код )
-
@centerdevs said in Универсальное решение по обработке ошибок BAS?:
странно, но эту асинхронность сгенерил сам BAS, на скриншоте выше там оригинал того что я экспортировал в модуль.
Посмотрите внимательный, там где сгенерировал сам БАС нет try/catch у БАС свое api для работы с асинхронностью
-
@UserTrue да, это моя неудачная попытка словить ошибку )
_call(function(){ _on_fail(function(){ VAR_LAST_ERROR = _result() VAR_ERROR_ID = ScriptWorker.GetCurrentAction() log(VAR_ERROR_ID+' '+VAR_LAST_ERROR); }) load("googlecom")! log("1 Удачно"); }, null)! _call(function(){ _on_fail(function(){ VAR_LAST_ERROR = _result() VAR_ERROR_ID = ScriptWorker.GetCurrentAction() log(VAR_ERROR_ID+' '+VAR_LAST_ERROR) }) load("http://google.com/")! log("2 Удачно"); }, null)!Вот таким образом получилось на данный момент ловить ошибку и продолжать работу дальше. Интересно можно ли будет как-то использовать этот _on_fail глобально.
-
@centerdevs нуу. ты можешь использовать лютейший костыль в виде eval. а вообще есть try catch
-
@centerdevs Я повторюсь БАС не заточен для работы через API, вы в итоге потратите кучу времени на танцы с бубном и понимание странных багов, которые скорей всего будут! Лучше учиться строить логику скрипта в соответствии с возможностями БАС
-
@centerdevs said in Универсальное решение по обработке ошибок BAS?:
Добрый день, прошу совета опытных ребят, поделитесь самым рабочим паттерном по работе с ошибками и исключениями.
Имеем - проект на 20 функций, в каждой 10-20 действий.
Вопрос - как можно, красиво и универсально обрабатывать ошибки?
Это мой первый проект, потому на данный момент, исходя из примеров и документации, для себя вижу пока что одно решение "в лоб":
- каждое действие оборачивать в блок "Игнор ошибок" где при ошибке делаем "Скриншот" + отправка мне в телеграмм извещения ( или сервер, не суть ), с указанием места где произошла ошибка в коде, или простое игнорирование.
Получается нужно два типа реагирования на ошибки:
-
когда точно знаю что элемент на странице обязан быть, а его нет, таким образом можно предположить что веб-ресурс поменял вёрстку, мы пропускаем функцию или совсем стопаем проект, зависит от условий в разных местах.
-
когда элемент не обязательно должен существовать, и нам нужно просто тихо проигнорировать и идти дальше
Проблема - если оборачивать каждое действие в игнор, это очень сильно увеличит общее количество кода ( блоков ), ухудшит общую читаемость, восприятие и тд.
Чего хотелось бы - не изобретать велосипед, а сразу сделать правильно. Поделитесь опытом друзья)
Только вы знаете, какие действия на странице важные, а какие нет. Оберните необходимые действия в игнор ошибок, или отключите опцию "Остановить поток, если элемент не найден"

каждое действие оборачивать в блок "Игнор ошибок" где при ошибке делаем "Скриншот" + отправка мне в телеграмм извещения ( или сервер, не суть ), с указанием места где произошла ошибка в коде, или простое игнорирование.
Вы можете обернуть в игнор ошибок вызов функции, в таком случае действие "Игнорировать Ошибки" применится ко всем действиям в вызванной функции:



А на счёт использования api BAS в действии "выполнить код", приведу скриншот ответа @support :

-
@f0cus said in Универсальное решение по обработке ошибок BAS?:
@Fox Воспользуюсь моментом. @Fox а защиту с нодой исправили? ато я чота этот момент пропустил. И в поиске нет ответа.
Ты про код из действия node js в открытом виде? Быстрее было проверить, чем спрашивать :). С шифровкой кода для ноды были какие то серьёзные трудности, какие именно не помню (не нашёл сходу ответ @support).
Я прятал важные участки кода в переменные BAS и выполнял в ноде через eval() -
Всё понял друзья, большое спасибо за внимание и помощь)
"Остановить поток если элемент не найден" даже не подумал глянуть про такую опцию)
Буду делать дальше тогда в том виде в котором есть, и понемногу копать про nodejs.