Режим записи и остановка скрипта
-
Если в скрипте присутствует действие "Игнорировать ошибки", то при остановке в режиме записи автоматически будут выполняться действия из [[WAS_ERROR]], так как почему - то BAS при выполнении "Прервано Пользователем" в логе считает это ошибкой. Да, конечно можно обрабатывать каждую ошибку отдельно и тогда такого не будет, но хотел спросить, для чего это нужно? И не было бы логичнее просто не считать это ошибкой. Если после [[WAS_ERROR]] присутствуют много действий, то каждый раз при остановке приходится нажимать несколько раз на клавишу "Остановить", это как - то немного не удобно.
-
Соглашусь, не удобно, особенно если при ошибке отправляешь письмо на почту или телеграм.
Как костыль подойдет вариант - после [WAS_ERROR] добавить проверку условияif [LAST_EROOR] !="прервано пользователем"
-
@GameBot Так же для новичков в BAS я думаю это может быть проблемой.
Типа, почему я жму на "Остановить", а скрипт продолжает выполняться.
-
-
@spacerange в какой версии программы наблюдается ошибка?
Протестировал сейчас. Вроде "Прервать скрипт" в последней версии не считается ошибкой.
-
@GameBot На самой последней, но только в режиме записи.
Сейчас запишу гифку.
-
Тестовый скрипт: TestError.xml
-
@spacerange said in Режим записи и остановка скрипта:
На самой последней, но только в режиме записи.
В режиме запуска такое не наблюдается. Видимо я тоже ловил эту ошибку во время редактирования скрипта в режиме записи. Ошибку тоже воспроизвел на последней версии.
В таком случае это все же ошибка. Действия программы в режиме записи и запуска отличаются. Даже в логе в "режиме записи" действие "прервано пользователем" выделяется как ошибка (выделено красным), а при запуске получаем "Поток выполнен успешно с сообщением "Ok""
-
@GameBot Тоже это заметил, поэтому в шапке написал, что в логе считается ошибкой.
Проверял в режиме запуска, там все ок.
-
@GameBot said in Режим записи и остановка скрипта:
@spacerange said in Режим записи и остановка скрипта:
На самой последней, но только в режиме записи.
В режиме запуска такое не наблюдается. Видимо я тоже ловил эту ошибку во время редактирования скрипта в режиме записи. Ошибку тоже воспроизвел на последней версии.
В таком случае это все же ошибка. Действия программы в режиме записи и запуска отличаются. Даже в логе в "режиме записи" действие "прервано пользователем" выделяется как ошибка (выделено красным), а при запуске получаем "Поток выполнен успешно с сообщением "Ok""Действие может завершится успешно только в одном случае - если завершится само. Завершится ошибкой может по таймауту или при прерывании пользователем.
Меня если честно раздражает немного другой момент этого поведения, когда выполняемое действие находится глубоко в циклах и условиях, то её прерывание сбросит стек.
Надо посмотреть метод кнопки "Прервать" в интерфейсе..
-
@Fox said in Режим записи и остановка скрипта:
@GameBot said in Режим записи и остановка скрипта:
@spacerange said in Режим записи и остановка скрипта:
На самой последней, но только в режиме записи.
В режиме запуска такое не наблюдается. Видимо я тоже ловил эту ошибку во время редактирования скрипта в режиме записи. Ошибку тоже воспроизвел на последней версии.
В таком случае это все же ошибка. Действия программы в режиме записи и запуска отличаются. Даже в логе в "режиме записи" действие "прервано пользователем" выделяется как ошибка (выделено красным), а при запуске получаем "Поток выполнен успешно с сообщением "Ok""Действие может завершится успешно только в одном случае - если завершится само. Завершится ошибкой может по таймауту или при прерывании пользователем.
Меня если честно раздражает немного другой момент этого поведения, когда выполняемое действие находится глубоко в циклах и условиях, то её прерывание сбросит стек.
Надо посмотреть метод кнопки "Прервать" в интерфейсе..Вопрос тут в другом: почему с точки зрения программы прервать выполнение в режиме записи - это ошибка, а в режиме запуска уже нет (получаем "Работа завершена с сообщением ОК", то есть уже "Успешно")
Если бы логика в обоих случаях была одинаковая, то вопросов бы не было - "Так заложено разработчиком". Получается это не одна кнопка, а разные
-
@GameBot said in Режим записи и остановка скрипта:
@Fox said in Режим записи и остановка скрипта:
@GameBot said in Режим записи и остановка скрипта:
@spacerange said in Режим записи и остановка скрипта:
На самой последней, но только в режиме записи.
В режиме запуска такое не наблюдается. Видимо я тоже ловил эту ошибку во время редактирования скрипта в режиме записи. Ошибку тоже воспроизвел на последней версии.
В таком случае это все же ошибка. Действия программы в режиме записи и запуска отличаются. Даже в логе в "режиме записи" действие "прервано пользователем" выделяется как ошибка (выделено красным), а при запуске получаем "Поток выполнен успешно с сообщением "Ok""Действие может завершится успешно только в одном случае - если завершится само. Завершится ошибкой может по таймауту или при прерывании пользователем.
Меня если честно раздражает немного другой момент этого поведения, когда выполняемое действие находится глубоко в циклах и условиях, то её прерывание сбросит стек.
Надо посмотреть метод кнопки "Прервать" в интерфейсе..Вопрос тут в другом: почему с точки зрения программы прервать выполнение в режиме записи - это ошибка, а в режиме запуска уже нет (получаем "Работа завершена с сообщением ОК", то есть уже "Успешно")
Если бы логика в обоих случаях была одинаковая, то вопросов бы не было - "Так заложено разработчиком". Получается это не одна кнопка, а разныеА где вы нашли кнопку "Прервать" в режиме "запуска"?
-
@Fox Да, по идее "Прервать" и "Остановить" разные кнопки, но смысл схож и от того ещё более не ясно почему это считается ошибкой, ведь в режиме запуска нажать ее нельзя и поэтому обрабатывать такую ошибку незачем.
-
@spacerange said in Режим записи и остановка скрипта:
@Fox Да, по идее "Прервать" и "Остановить" разные кнопки, но смысл схож и от того ещё более не ясно почему это считается ошибкой, ведь в режиме запуска нажать ее нельзя и поэтому обрабатывать такую ошибку незачем.
Действие "игнорировать ошибки" не так давно сильно апнули, теперь оно позволяет игнорировать большинство ошибок (в том числе и критические, например в действии "выполнить код"). Скорее всего именно по этому это действие и срабатывает даже при ручном прерывании действия
-
@Fox Так же очень бесит, что скрипт встаёт после смены профиля в режиме записи. Ты начинаешь его тестово прогонять, где-то внутри функции меняется профиль - и всё. Всё перезагружается и встаёт. Все циклы сбрасываются, из этой функции в материнскую по Return значение уже не передастся - скрипт "потерялся" в пространстве и забыл, что он делал до смены профиля.