Поток выполнен успешно с сообщением "Ok" не могу понять откуда это?
-
Добрый всем день, в конце скрипта поставил его завершение с надписью поток отработал Но периодически не часто но они есть, лезут сообщения Поток выполнен успешно с сообщением "Ok" Попытался поискать на форуме, вроде суппорт на такой же вопрос отвечал что это из-за меток. Да, я использую метки, но они не входят ни в цикл ни в условие, наоборот выходят из условия, например если произошла ошибка то скрипт заходит в условие и по метке выходит из него чуть раньше, на еще один заход.
Вопрос суппорту, сообщение Поток выполнен успешно с сообщением "Ok" появляется если скрипт просто задействовал метку, или когда?
-
@Samael_96 это сообщение появляется когда поток отработал полностью, если конечно в конце потока не стоит другое завершение. Смотрите вниматешьно логику, при каких то условиях скрипт обходит ваше принудительное завершение
-
@DrPrime Ясно, то есть Поток выполнен успешно с сообщением "Ok", это дефолтное завершение, если не стоит свое. Посмотрел вроде как прямого обхода нет, мой Success стоит в самом конце основной функции Main. Загадка, надо еще по меткам пройтись, где-то все-таки мой косяк есть.
Только что подумал, может быть такая ситуация, скрипт по метке заходит в какою нибудь функцию, а выйти из нее не может, по той простой причине, что он не знает где он зашел, и отработав ее до конца выдает завершение потока Ок.
Надо все-таки все метки удалить, и сделать через функции возврат.
-
@DrPrime Короче я понял, может быть кому будет интересно, теперь я понимаю почему не вводили метки, это действительно весьма спорная функция, ее надо очень хорошо знать перед тем как использовать. Во всяком случае в том виде в каком она есть.
Рассказываю ситуацию, мой скрипт имеет кроме основной функции Main еще 7 мной добавленных функций, для удобства. Смысл в чем, если ты используешь метки внутри любой добавленной тобой функции. То, когда скрипт срабатывает на метке, даже если они обе внутри одной и той же функции, то получается что очищается информация о том как он зашел в эту функцию и как ему оттуда выйти, итого он обрабатывает эту функцию до конца и пишет Поток выполнен успешно с сообщением "Ok"
Имхо это все-таки недоработка БАС.
-
@Samael_96 это не доработка бас, это называется стеки вызовов.
Идут 3 функции, программа знает что ей их нужно выполнить поочередно. Но вдруг после первой функции стоит метка, которая, переносит точку выполнения в третью функцию. Стек вызовов потерялся, теперь программа считает что ей нужно выполнить остаток функции и все.
Для того что бы этого избежать - выходите из функции тоже по метке, в тот участок, эелательно перед второй функцией, что бы программа "сформировала" для себя новый стек из оставшихся двух функций.
П.С. бцло обьяснено своими словами, поэтому тру прогеров прошу не ругаться и поправить, если где то ошибка
-
@DrPrime То что вы описали, с этим я согласен. Но у меня получается случай с метками такой что все они не выходили за пределы одной функции. И например в этой ситуации если возврат по скрипту делать с помощью рекурсии, то проблем не возникает.