Маркированный разрыв игнорируется или рассматривается как нормальный разрыв
Моя целевая платформа - Android. Похоже, я не могу сделать разметку с разметкой даже один раз. Что мне не хватает? Похоже, что Android обработал последний помеченный перерыв как обычный разрыв, иначе он несколько раз зациклился.
public class Test{
public static final String TAG = Test.class.getSimpleName();
public static void labled_breakTest(){
int counter = 0;
retry:
try{
counter += 1;
throw new SQLiteException();
}catch(SQLiteException e){
Log.i(TAG, "Catch, Counter " + counter);
if(counter <= 3) break retry;
}finally{
Log.i(TAG, "finally, Counter " + counter);
if(counter <= 3) break retry;
}
counter = 0;
loop_break:
while(counter < 3){
counter += 1;
Log.i(TAG, "Loop, Counter " + counter);
break loop_break;
};
}
}
03-07 16:32:07.709: I/Test(18473): Catch, Counter 1
03-07 16:32:07.709: I/Test(18473): finally, Counter 1
03-07 16:32:07.713: I/Test(18473): Loop, Counter 1
Ответы
Ответ 1
Ваш вывод верен для кода, который вы предоставили. С вашего поста звучит так, как будто вы ожидаете переноса потока управления на метку. Это не относится к Java.
В Документы Java:
Оператор break завершает обозначение с надписью; он не передает поток управления этикетке. Управляющий поток переносится в инструкцию сразу же после указанного (завершенного) оператора.