If I have a try ... catch
block inside a while
loop, and there#s a break
inside the catch
, does program execution leave t
Will an exception thrown in doStuff() exit the loop?
Step by step, here is what will happen:
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.
Yes, it'll break the loop.
But why not do:
finished = true;
instead?
Yes. break
exists loop and switch
statements.
Yes, It does. break exit from while loop.
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.