Does a break leave just the try/catch or the surrounding loop?

后端 未结 6 748
花落未央
花落未央 2020-12-29 01:28

If I have a try ... catch block inside a while loop, and there#s a break inside the catch, does program execution leave t

相关标签:
6条回答
  • 2020-12-29 02:05

    Will an exception thrown in doStuff() exit the loop?

    Step by step, here is what will happen:

    1. The exception is thrown in doStuff()
    2. Your "eat all Exceptions" handler will catch the exception.
    3. The "break" statement will leave the while loop.
    0 讨论(0)
  • 2020-12-29 02:07

    Yes, it will. Easiest way to find out is to try it.

    public static void main(String[] args) {
            int i=0;
            while (i<10) {
                System.out.println(i);
                try {
                    if(i ==7){
                        throw new Exception();
                    }
                    i++;
                } catch (Exception e) {
                    break;
                }
            }
            System.out.println("out of loop");
        }
    

    It will print

    0
    1
    2
    3
    4
    5
    6
    7
    out of loop
    

    The output starts with 0.

    0 讨论(0)
  • 2020-12-29 02:16

    Yes, it'll break the loop.

    But why not do:

    finished = true;
    

    instead?

    0 讨论(0)
  • 2020-12-29 02:17

    Yes. break exists loop and switch statements.

    0 讨论(0)
  • 2020-12-29 02:18

    Yes, It does. break exit from while loop.

    0 讨论(0)
  • 2020-12-29 02:19

    A break statement always applies to the innermost while, do, or switch, regardless of other intervening statements. However, there is one case where the break will not cause the loop to exit:

    while (!finished) {
        try {
            doStuff();
        } catch (Exception e) {
            break;
        } finally {
            continue;
        }
    }
    

    Here, the abrupt completion of the finally is the cause of the abrupt completion of the try, and the abrupt completion of the catch is lost.

    0 讨论(0)
提交回复
热议问题