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



  • Собственно в названии все написано. У меня есть функция Main (назовем функция 1 уровня), где есть несколько функций, идущих друг за другом. В одной из функций (назовем функция 2 уровня) есть несколько функций (назовем функция 3 уровня) и бывает в них возникает ошибка и я ее обработал и в случае ошибки он повторяет определенные действия (с помощью меток). Так вот в случае ошибки метка возвращается из функции 3 уровня в начало функции 2 уровня. После того как отрабатывает функция 2 уровня, в 1 уровень уже она не возвращается и скрипт останавливается, не выдавая никаких ошибок. Return не помогает. Как бы это решить?



  • @checkdimon said in При использовании меток скрипт останавливается:

    Собственно в названии все написано. У меня есть функция Main (назовем функция 1 уровня), где есть несколько функций, идущих друг за другом. В одной из функций (назовем функция 2 уровня) есть несколько функций (назовем функция 3 уровня) и бывает в них возникает ошибка и я ее обработал и в случае ошибки он повторяет определенные действия (с помощью меток). Так вот в случае ошибки метка возвращается из функции 3 уровня в начало функции 2 уровня. После того как отрабатывает функция 2 уровня, в 1 уровень уже она не возвращается и скрипт останавливается, не выдавая никаких ошибок. Return не помогает. Как бы это решить?

    Самое очевидное решение - не использовать метки. А вообще лучше приложите тестовый скрипт повторяющий ошибку



  • @checkdimon said in При использовании меток скрипт останавливается:

    Собственно в названии все написано. У меня есть функция Main (назовем функция 1 уровня), где есть несколько функций, идущих друг за другом. В одной из функций (назовем функция 2 уровня) есть несколько функций (назовем функция 3 уровня) и бывает в них возникает ошибка и я ее обработал и в случае ошибки он повторяет определенные действия (с помощью меток). Так вот в случае ошибки метка возвращается из функции 3 уровня в начало функции 2 уровня. После того как отрабатывает функция 2 уровня, в 1 уровень уже она не возвращается и скрипт останавливается, не выдавая никаких ошибок. Return не помогает. Как бы это решить?

    Еще одну метку создать, что по окончании функции вернуться обратно.
    У меня есть такой баг, но возникает когда функция слишком большая.



  • Чувак, освой рекурсию, и не юзай метки, метки это не правильный подход, это зло.



  • На рекурсии и метках еще не надо использовать
    else для блока логики if, частенько у меня так ошибки сыпались, выход ставить два блока if



  • Вообще метки сами по себе не зло, просто на них можно с дуру багов наловить. Как сказали выше метками в в блок else не надо прыгать и из функции в функцию тоже не надо заходить иначе назад скрипт сам дорогу не найдет ). А так метки в бас бывает даже удобно ставить, если с умом )



  • @UserTrue В крупных проектах - метки опасно применять. И с этим ты вряд ли будешь спорить :D



  • @mordor said in При использовании меток скрипт останавливается:

    @UserTrue В крупных проектах - метки опасно применять. И с этим ты вряд ли будешь спорить :D

    Буду ) Ничего опасного, если делать как я сказал ) Сами по себе метки багов не имеют!



  • @UserTrue
    А вот соглашусь, но тут проблема новички и не не совсем не совсем понимают принцип работы баса. Вроде все так же но пока сам пару раз не обожжешься нихера не понятно. Вернее кажется что понятно ВСЕ. А это плохо. =))
    @mordor метки реально выручают и поверьте я сейчас пишу скрипт там и циклы и метки.. в циклах. Так удобнее получается минимум 300 стр кода долой. И оно работает. Главное понять как делать нельзя, а как можно.
    ps новичкам не советуют их использовать не потому что они зло. Это инструмент как нож им можно хлеб резать, а можно и не хлеб. Их надо уметь ставить. И знать как применять. Иначе да. все завалишь



  • @tts9 Да, было бы хорошо, если бы БАС был более умным, анализировал код и предупреждал о возможных опасностях, а так пока шишек на набьешь не поедешь, а код действительно сокращает и упрощает, потому что на кубиках особо ничего не выдумаешь и метки хоть как-то спасают, раньше тоже боялся меток, приходилось городить лишнии цикл и жесть такая запутанная получалась )



  • Вот два примера как делать не надо
    label_1.xml
    label_2.xml



  • @mordor said in При использовании меток скрипт останавливается:

    @UserTrue В крупных проектах - метки опасно применять. И с этим ты вряд ли будешь спорить :D

    Не опасно. Скрипт полуторогодичной давности, сейчас я уже так не пишу.
    alt text



  • @checkdimon said in При использовании меток скрипт останавливается:

    Собственно в названии все написано. У меня есть функция Main (назовем функция 1 уровня), где есть несколько функций, идущих друг за другом. В одной из функций (назовем функция 2 уровня) есть несколько функций (назовем функция 3 уровня) и бывает в них возникает ошибка и я ее обработал и в случае ошибки он повторяет определенные действия (с помощью меток). Так вот в случае ошибки метка возвращается из функции 3 уровня в начало функции 2 уровня. После того как отрабатывает функция 2 уровня, в 1 уровень уже она не возвращается и скрипт останавливается, не выдавая никаких ошибок. Return не помогает. Как бы это решить?

    Метки это костыль, Но я использовал и работало.



  • @denanotherday said in При использовании меток скрипт останавливается:

    Метки это костыль, Но я использовал и работало.

    На самом деле циклы, условия, функции это все работает на метках на низком уровне ))) Если цикл и тд потомки костыля, значит они их дети и тоже костыли xDDD



  • @UserTrue said in При использовании меток скрипт останавливается:

    @denanotherday said in При использовании меток скрипт останавливается:

    Метки это костыль, Но я использовал и работало.

    На самом деле циклы, условия, функции это все работает на метках на низком уровне ))) Если цикл и тд, потомки костыля, значит они их дети и тоже костыли xDDD

    Не помню когда Out говорил Support не связываться, но заморочился для нас, Спасибо. И повторюсь, у меня работают.


Log in to reply