CodeBlanks Logo Icon CodeBlanks

try-with-resources

try-with-resources ile kaynak yönetimini öğrenirsin.

try-with-resources kaynağı otomatik kapatır

try-with-resources kaynağı parantez içinde tanımlar; blok bitince close() otomatik çağrılır. Böylece kapatmayı unutma riski ortadan kalkar.

try (Scanner input = new Scanner(System.in)) {
  String name = input.nextLine();
  System.out.println(name);
}

Parantez içindeki değişken AutoCloseable olmalıdır; Scanner ve BufferedReader buna uyar. İster istisna çıksın ister çıkmasın, kapanma garantilenir. Bu yapı Java 7'den beri kaynak yönetiminin önerilen yoludur.

AutoCloseable arayüzü

Bir kaynağın try-with-resources içine alınabilmesi için AutoCloseable arayüzünü gerçeklemesi gerekir. Bu arayüz tek bir close() yöntemi içerir.

try (BufferedReader r = new BufferedReader(
      new InputStreamReader(System.in))) {
  System.out.println(r.readLine());
}

İç içe sarmalanmış kaynakları tek parantez içinde virgülle de yazabilirsin; en içteki kapatılırken sıra dıştan içe takip edilir. Java derleyicisi kapatma sırasını senin yerine yönetir.

Uygulama try-with-resources ile oku

Scanner'ı try-with-resources içinde oluştur, bir satır oku ve yazdır. Kullanıcı Merhaba yazacak. Kaynağın otomatik kapanmasına güven.

Başlangıç kodu

Main.java
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // try-with-resources ile Scanner oluştur, satır oku, yazdır
  }
}

Örnek çözüm

Main.java
try (Scanner input = new Scanner(System.in)) {
  String line = input.nextLine();
  System.out.println(line);
}

Beklenen çıktı

Merhaba

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kaynağı try içinde tanımla

Soru
try (____ input = new Scanner(System.in)) {
  String name = input.nextLine();
}
Cevap
try (Scanner input = new Scanner(System.in)) {
  String name = input.nextLine();
}

Açıklama: kaynak türü Scanner'dır ve parantez içinde tanımlanır.

2 Cümleyi tamamla

Kavram Anlamı
try-with-resources close otomatik
AutoCloseable kapatılabilir arayüz
Scanner okuyucu
BufferedReader arabellekli okuyucu

3 try-with-resources bloğu bittiğinde ne olur?

  • Kaynak açık kalır
  • Program durur
  • close() otomatik çağrılır Doğru cevap
  • Hiçbir şey

Açıklama: try-with-resources bloğu bitince kaynağın close() yöntemi otomatik çağrılır.

Başlangıç bölümündeki tüm dersler