标记的中断被忽略或视为正常中断

时间:2014-03-08 00:24:34

标签: java android

我的目标平台是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 个答案:

答案 0 :(得分:1)

您的输出对于您提供的代码是正确的。从您的帖子中,听起来好像您期望将控制流转移到标签上。这不是Java中的情况。

根据Java docs

  

break语句终止带标签的语句;它不会将控制流转移到标签上。控制流程在标记(终止)语句之后立即转移到语句。