我的目标平台是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
答案 0 :(得分:1)
您的输出对于您提供的代码是正确的。从您的帖子中,听起来好像您期望将控制流转移到标签上。这不是Java中的情况。
根据Java docs:
break语句终止带标签的语句;它不会将控制流转移到标签上。控制流程在标记(终止)语句之后立即转移到语句。