C#
Birleştirme
Tüm parçaları birleştirerek çalışan bir final uygulaması yazarsın.
Tüm parçaları birleştir
Son derste tüm parçaları Main içinde birleştireceğiz. İki geçerli kitap ekleyecek, ardından geçersiz bir kitap eklemeyi deneyecek ve hatayı yakalayacağız. En son ListBooks ile geçerli kitapları listeleyeceğiz. Bu, başlangıç seviyesinin sentezini yapar.
Programın çıktısı sırasıyla şöyle olmalı: önce geçersiz kitap hatası yakalanır ve yazdırılır, sonra ListBooks ile eklenen iki geçerli kitap listelenir. try/catch sayesinde program çökmeden yoluna devam eder ve son adımda kitaplar gösterilir.
try/catch sonrası akış
try/catch bloğu tamamlandıktan sonra program akışı normal şekilde devam eder. Yani catch bloğu çalıştıktan sonra sonraki satırlar yürütülür. Bu, hatayı yakalayıp programı sonuna kadar çalıştırmayı sağlar.
Bu projede try/catch bloğundan sonra ListBooks(); çağrısı yapılır. Geçersiz kitap eklenemediği için listede yalnızca iki geçerli kitap vardır; ListBooks bu iki kitabı yazdırır. Böylece kullanıcı hem hatayı görür hem de geçerli kitapların listesini alır.
Uygulama Programı birleştir
Main içinde şu akışı kur: önce AddBook("Yüzüklerin Efendisi", 350); ve AddBook("Suç ve Ceza", 700); ile iki geçerli kitap ekle. Sonra try { AddBook("Geçersiz Kitap", 0); } ve catch (InvalidBookException ex) { Console.WriteLine("Hata: " + ex.Message); } ile geçersiz kitabı dene. En son ListBooks(); çağır.
Örnek çözümü göster
" + ex.Message); } ve ListBooks(); ekle.
Örnek çözüm:
using System;
using System.Collections.Generic;
class Book
{
public string Title;
public int PageCount;
}
class InvalidBookException : Exception
{
public InvalidBookException(string msg) : base(msg) { }
}
class Program
{
static List<Book> books = new List<Book>();
static void PrintMenu()
{
Console.WriteLine("1 - Ekle");
Console.WriteLine("2 - Listele");
Console.WriteLine("3 - Çıkış");
}
static void AddBook(string title, int pageCount)
{
if (pageCount <= 0)
{
throw new InvalidBookException("Sayfa sayısı sıfırdan büyük olmalı");
}
books.Add(new Book { Title = title, PageCount = pageCount });
}
static void ListBooks()
{
foreach (Book b in books)
{
Console.WriteLine(b.Title + " - " + b.PageCount + " sayfa");
}
}
static void Main()
{
AddBook("Yüzüklerin Efendisi", 350);
AddBook("Suç ve Ceza", 700);
try
{
AddBook("Geçersiz Kitap", 0);
}
catch (InvalidBookException ex)
{
Console.WriteLine("Hata: " + ex.Message);
}
ListBooks();
}
}
Kendini test et
-
Adımı çıktısıyla eşleştir
- Geçerli kitap ekle
- Listeye eklenir
- Geçersiz kitap ekle
- Hata yakalanır
- ListBooks çağrısı
- Kitaplar yazdırılır
-
try/catch sonrası ne olur?
try { AddBook("X", 0); }
catch (InvalidBookException ex) { ... }
ListBooks();
- catch çalışır, sonra ListBooks çağrılır
- Program çöker
- ListBooks çağrılmaz
- try bloğu tekrar çalışır
Cevabı göster
catch çalışır, sonra ListBooks çağrılır — Doğru! catch çalışır, akış devam eder ve ListBooks çağrılır.
-
Liste çağrısı
catch (Exception ex) { }
____;
Cevabı göster
catch (Exception ex) { }
ListBooks();
Sıradaki ders: Başlangıç bölüm sınavı