A continue
statement without a label will re-execute from the condition the innermost while
or do
loop, and from the update expression of the innermost for
loop. It is often used to early-terminate a loop’s processing and thereby avoid deeply-nested if
statements. In the following example continue
will get the next line, without processing the following statement in the loop.
while (getNext(line)) { if (line.isEmpty() || line.isComment()) continue; // More code here }
With a label, continue
will re-execute from the loop with the corresponding label, rather than the innermost loop. This can be used to escape deeply-nested loops, or simply for clarity.
Sometimes continue
is also used as a placeholder in order to make an empty loop body more clear.
for (count = 0; foo.moreData(); count++) continue;
The same statement without a label also exists in C and C++. The equivalent in Perl is next
.
This type of control flow is not recommended, but if you so choose you can also use continue
to simulate a limited form of goto
. In the following example the continue
will re-execute the empty for (;;)
loop.
aLoopName: for (;;) { // ... while (someCondition) // ... if (otherCondition) continue aLoopName;