finally
- Java kursu
- Başlangıç
- Ders 107/116
- 4 dk
finally bloğunu öğrenirsin.
finally her zaman çalışır
finally bloğu istisna çıksa da çıkmasa da her zaman çalışır. Kaynakları temizlemek (dosya kapatma, bağlantı bırakma) için kullanılır.
try {
int r = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Hata");
} finally {
System.out.println("Temizlik");
}finally, catch'ten sonra gelir; tek başına try ile de kullanılabilir. İstisna yakalansa bile program sonlanmadan önce finally kesinlikle yürütülür. Bu özellik kaynak sızıntısını önlemenin güvenli yoludur.
finally catch olmadan da çalışır
finally bir catch olmadan da kullanılabilir. Bu durumda istisna yakalanmaz ama temizlik yine de yapılır; istisna daha üst katmana yayılır.
try {
int r = 10 / 0;
} finally {
System.out.println("Temizlik");
}Bu yapı, hatayı yönetmek istemeyen ama kaynağı yine de kapatmak isteyen kodda yararlıdır. try-with-resources bu düzenin kısa bir alternatifidir. finally içinde return yazmak teknik olarak mümkündür ama kaçınılmalıdır; çünkü beklenmeyen sonuçlar doğurabilir.
Uygulama try/catch/finally yaz
int a = 10; int b = 0; değerlerini böl. try içine al; ArithmeticException yakala ve Hata yazdır. finally bloğunda Temizlik yazdır.
Başlangıç kodu
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 0;
// bölmeyi dene, hatayı yakala, finally ile temizlik yap
}
}Örnek çözüm
try {
int result = a / b;
System.out.println(result);
} catch (ArithmeticException e) {
System.out.println("Hata");
} finally {
System.out.println("Temizlik");
}Beklenen çıktı
Hata Temizlik
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 finally bloğunu ekle
try {
int r = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Hata");
} ____ {
System.out.println("Temizlik");
}
try {
int r = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Hata");
} finally {
System.out.println("Temizlik");
}
Açıklama: finally catch'ten sonra gelir ve her zaman çalışır.
2 Bloğu çalışma zamanıyla eşleştir
| Kavram | Anlamı |
|---|---|
try |
Riskli kod |
catch |
Hata olunca |
finally |
Her zaman |
else |
try'de değil |
3 finally bloğu ne zaman çalışır?
- Yalnızca istisna olunca
- Hiçbir zaman
- Her zaman (istisna olsa da olmasa da) Doğru cevap
- Yalnızca istisna olmayınca
Açıklama: finally her durumda çalışır; istisna çıksa da çıkmasa da.