Перерыв и метка "Метка MyLabel отсутствует"
У меня есть такой код:
if(condition1)
{
break MyLabel;
}
while(true)
{
//some code here
MyLabel: if(condition2) break;
//more code here
}
и я получаю эту ошибку:
Метка MyLabel отсутствует.
В чем дело?
2 ответа
Вы можете перейти только к метке, которая находится в текстовом вмещающем утверждении. В вашем примере метка НЕ содержится в операторе, который содержит break
заявление.
(Для чего это стоит, даже языки более высокого уровня, которые поддерживают goto
не позволяйте вам прыгать в середину петли снаружи. Я думаю о C ... и более старых языках, таких как FORTRAN.)
Java позволяет вам взломать, но взлом является незаконным... и вас арестуют:-)
(Извините, я не смог устоять. Для тех, кто не понимает шутки, "взлом" - это когда кто-то входит в ваш дом, чтобы украсть вещи - см. "Взломать и войти"...)
Вы не можете использовать ярлыки в качестве общего способа.
Используйте метки, если вы хотите перейти на более высокий уровень вложенного кода.
например
l1: while
l2: while
l3: while
break l1
l4: while