while
Java'da aşağıdaki sonsuz döngüye bakın. Altındaki ifade için derleme zamanı hatasına neden olur.
while(true) {
System.out.println("inside while");
}
System.out.println("while terminated"); //Unreachable statement - compiler-error.
Aşağıdaki aynı sonsuz while
döngü, ancak iyi çalışıyor ve koşulu bir boole değişkeniyle değiştirdiğim herhangi bir hata vermiyor.
boolean b=true;
while(b) {
System.out.println("inside while");
}
System.out.println("while terminated"); //No error here.
İkinci durumda da, döngüden sonraki ifadeye açıkça ulaşılamaz çünkü boolean değişkeni b
doğrudur, yine de derleyici hiç şikayet etmez. Neden?
Düzenleme: Aşağıdaki sürüm, while
açık olduğu gibi sonsuz bir döngüye sıkışmış olur, ancak if
döngü içindeki koşul her zaman false
ve sonuç olarak, döngü hiçbir zaman geri dönemez ve derleyici tarafından belirlenebilir. derleme zamanının kendisi.
while(true) {
if(false) {
break;
}
System.out.println("inside while");
}
System.out.println("while terminated"); //No error here.
while(true) {
if(false) { //if true then also
return; //Replacing return with break fixes the following error.
}
System.out.println("inside while");
}
System.out.println("while terminated"); //Compiler-error - unreachable statement.
while(true) {
if(true) {
System.out.println("inside if");
return;
}
System.out.println("inside while"); //No error here.
}
System.out.println("while terminated"); //Compiler-error - unreachable statement.
Düzenleme:if
ve ile aynı şey while
.
if(false) {
System.out.println("inside if"); //No error here.
}
while(false) {
System.out.println("inside while");
// Compiler's complain - unreachable statement.
}
while(true) {
if(true) {
System.out.println("inside if");
break;
}
System.out.println("inside while"); //No error here.
}
Aşağıdaki sürüm while
de sonsuz bir döngüye sıkışmış durumda.
while(true) {
try {
System.out.println("inside while");
return; //Replacing return with break makes no difference here.
} finally {
continue;
}
}
Bunun nedeni, ifade kendisinden önce bloğun içinde karşılaşsa finally
bile bloğun her zaman yürütülmesidir .return
try