Hata yönetimi
- Java kursu
- Başlangıç
- Ders 115/116
- 6 dk
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
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
// 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
try {
cat.borrowBook();
} catch (____ e) {
System.out.println("Hata: " + e.getMessage());
}
try {
cat.borrowBook();
} catch (IllegalStateException e) {
System.out.println("Hata: " + e.getMessage());
}
Açıklama: borrowBook'ın fırlattığı tür IllegalStateException'dır.