2011-06-30 15 views
9

yöntem düzeyinde istisnayı engeller ve atar. readFileMethod1'da, , finally bloğunun yürütülmesini sağlamak için yöntem düzeyinde atmadan önce açıkça yakalanır. Ancak, istisna yakalamak için gerekli mi? readFileMethod2'da gösterilen catch bloğunu kaldırırsam, finally bloğu da çalıştırılır mı?Java son olarak

private void readFileMethod1() throws IOException { 
    try { 
     // do some IO stuff 
    } catch (IOException ex) { 
     throw ex; 
    } finally { 
     // release resources 
    } 
} 

private void readFileMethod2() throws IOException { 
    try { 
     // do some IO stuff 
    } finally { 
     // release resources 
    } 
} 
+0

Bu soruyu kendim sormak üzereydim. Zihinsel not al. – JohnMerlino

cevap

7

finally hala işletilirse, ne olursa olsun IOException yakalamak olsun. Tüm yakalama blokunuz yeniden hareket ediyorsa, burada gerekli değildir.

4

Hayır, atmaktan başka bir şey yapmayacaksanız, bir istisna yakalamak tamamen gereksizdir.

Ve evet, sonuncu blok hala yürütülür.

2

Hayır, yönteminize yeniden atayamazsanız, bu özel durumun yakalanması gerekmez. Yayınladığınız kodda, readFileMethod2, izlenecek doğru seçenektir.

1

daima bağımsız bir istisna atılır olup olmadığını ait yürütüldüğünde kontrol ... deneyin catch bağlamında idam. Sadece, JVM, try bloğu veya catch bloğu yürütülürken kapatılırsa, sonuncu madde idam edilmeyecektir. Benzer şekilde, deneme veya yakalama kodunu yürüten iş parçacığı kesintiye uğruyor veya kesilirse, uygulama bir bütün olarak devam etse bile sonuncu blok çalışmayabilir.

İlgili konular