CodeBlanks Logo Icon CodeBlanks

Hata yönetimi

try/catch ile girdi doğrulama eklersin.

Müsait kitap yoksa hata fırlat

borrowBook müsait kitap bulamazsa sessizce bitmek yerine hata fırlatmalıdır. throw new IllegalStateException ile çağırana durumu bildirirsin.

void borrowBook() {
  for (Book b : books) {
    if (b.available) {
      b.available = false;
      return;
    }
  }
  throw new IllegalStateException("Müsait kitap yok");
}

Döngü tamamlandıktan sonra hala return edilmemişse müsait kitap yoktur. Bu noktada throw fırlatılır. Çağıran try/catch ile bunu yakalar; yakalamazsa program çöker. Bu, hata yönetiminin temelidir.

main'de try/catch

borrowBook artık hata fırlatabildiği için çağırırken try/catch kullanmalısın. İkinci ödünç alma denemesinde hata yakalanır ve mesaj yazdırılır.

try {
  cat.borrowBook();
  cat.borrowBook();
} catch (IllegalStateException e) {
  System.out.println("Hata: " + e.getMessage());
}

İlk borrowBook başarılı olur, ikincisi hata fırlatır. catch hatayı yakalar ve getMessage() ile mesajı alır. Bu yapı, hatanın programı çökertmeden yönetilmesini sağlar.

Uygulama Hata fırlat ve yakala

Catalog.borrowBook'ın sonuna throw new IllegalStateException("Müsait kitap yok") ekle (döngüden sonra). main'de cat.borrowBook()'u try içinde iki kez çağır; IllegalStateException yakala ve Hata: ile getMessage() yazdır.

Başlangıç kodu

Main.java
import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    Catalog cat = new Catalog();
    cat.addBook("Suç ve Ceza");
    // borrowBook'u iki kez çağır; ikincide hata fırlar, try/catch ile yakala
  }
}

class Book {
  String title;
  boolean available;
  Book(String title) {
    this.title = title;
    this.available = true;
  }
  public String toString() {
    return (available ? "[müsait] " : "[ödünç] ") + title;
  }
}

class Catalog {
  ArrayList<Book> books = new ArrayList<>();
  void addBook(String title) {
    books.add(new Book(title));
  }
  void borrowBook() {
    for (Book b : books) {
      if (b.available) {
        b.available = false;
        return;
      }
    }
    // Müsait kitap yoksa buraya ulaşılır
  }
}

Örnek çözüm

Main.java
// Catalog.borrowBook sonuna (döngüden sonra):
throw new IllegalStateException("Müsait kitap yok");
// main içinde:
try {
  cat.borrowBook();
  cat.borrowBook();
} catch (IllegalStateException e) {
  System.out.println("Hata: " + e.getMessage());
}

Beklenen çıktı

Hata: Müsait kitap yok

Soru ve cevaplar

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

1 borrowBook müsait kitap bulamazsa ne olur?

  • Sessizce biter
  • IllegalStateException fırlatır Doğru cevap
  • Tüm kitapları siler
  • Programı kapatır

Açıklama: döngüden sonra throw new IllegalStateException fırlatılır; çağıran yakalamazsa çöker.

2 Anahtar sözcüğü amacıyla eşleştir

Kavram Anlamı
throw İstisna fırlatır
try Riskli kod
catch Hata yakala
IllegalStateException Hata türü

3 catch bloğunu tamamla

Soru
try {
  cat.borrowBook();
} catch (____ e) {
  System.out.println("Hata: " + e.getMessage());
}
Cevap
try {
  cat.borrowBook();
} catch (IllegalStateException e) {
  System.out.println("Hata: " + e.getMessage());
}

Açıklama: borrowBook'ın fırlattığı tür IllegalStateException'dır.

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