HER ZAMAN DEĞİL
Java Dili özelliği, try-catch-finally ve try-catch bloklarının 14.20.2'de nasıl çalıştığını açıklar
. Hiçbir yerde, nihayet bloğun her zaman yürütüldüğünü belirtir. Ancak, try-catch-finally ve try-finally bloklarının tamamlandığı tüm durumlar için, tamamlamadan önce nihayet yürütülmesi gerektiğini belirtir.
try {
CODE inside the try block
}
finally {
FIN code inside finally block
}
NEXT code executed after the try-finally block (may be in a different method).
JLS garanti etmez FIN sonra yürütülür KODU . Eğer JLS garanti KOD ve SONRAKİ sonra yürütülür FIN daima sonra infaz edilecek KODU ve önce İLERİ .
JLS neden nihayet bloğun her zaman try bloğundan sonra yürütüleceğini garanti etmiyor? Çünkü imkansız. JVM'nin, try bloğunu tamamladıktan hemen sonra ancak nihayet bloğun çalıştırılmasından önce durdurulması muhtemeldir, ancak bu mümkün değildir. JLS'nin bunu önlemek için yapabileceği hiçbir şey yok.
Bu nedenle, uygun davranışları için her zaman, blokları tamamlandıktan sonra yürütülen bloklara bağlı olan herhangi bir yazılım tıkanır.
Deneme bloğundaki döndürmeler bu sorunla ilgili değildir. Uygulama, try-catch-nihayetinden sonra koda ulaşırsa, nihayet bloğun try bloğu içinde, iadeli veya iadeli olmadan gerçekleştirilmiş olması garanti edilir.