skip to Main Content
Hata Yönetimi

Hata Yönetimi

Hata yönetimi, tüm programlama dillerinde çok önemli konulardan birisidir. Yazmış olduğunuz programların belli bölümlerinde çeşitli sebeplerden dolayı hatalar meydana gelebilir. Önemli olan bu hataları doğru bir mimari ile yakalayıp programın istemsiz bir şekilde sonlanmasını önlemektir.

Her program hata ile karşı karşıya kalmaktadır. Ama programınızın bir hata yüzünden çalıştırmayı durdurması kolay kolay kabul edilebilir bir durum değildir. O yüzden bu konuyu burdan öğrenerek daha detaylı şekilde araştırıp kendinizi bu konuda geliştirmenizi tavsiye ederim.

Hata yönetimi için try-catch-finally blokları kullanılmaktadır.

try: Çalıştırılmasını istediğiniz kodlar bu blok arasına yazılır.

catch: Yazmış olduğunuz kodlarda bir hata olması durumunda çalıştırılacak kod bloğu buradadır.

finally: Hata olsa da olmasa da çalıştırılacak kod bloğudur.

try {
  // Yapılacak işlemler burda tanımlanır
  double number = double.parse("bu bir sayı değildir");
}catch(e) {
  // Bir hata olması durumunda kod bu bloğa girer.
  print("Bir hata meydana geldi");
}finally {
  // Hata olsun olmasın çalışacak kod bloğu
  // Örneğin veritabanı bağlantısında problem olursa, bağlantı nesnesini kapat.
  print("Her durumda çalıştırılacak kod bloğu, kullanımı zorunlu değildir.");
}

Belirli hata durumlarında sizin belirlediğiniz ayrı bir kod bloğu çalışmasını istiyorsanız, catch bloğunda “on HataTuru” bloğu ile bunu yapabilirsiniz. Örneğin yukarıda bir FormatException hatası aldık. Bu hata gerçekleştiğinde diğer hatalardan ayrı bir kod bloğu çalıştırmak istiyor isem bunu aşağıdaki gibi yapabiliriz.

class WalletException implements Exception {
  try {
    // Yapılacak işlemler burda tanımlanır
    double number = double.parse("bu bir sayı değildir");
  }on FormatException {
     print("Bu bir format hatasıdır.");
  }catch(e) {
    // Bir hata olması durumunda kod bu bloğa girer.
    print("Bir hata meydana geldi");
  }finally {
    // Hata olsun olmasın çalışacak kod bloğu
    // Örneğin veritabanı bağlantısında problem olursa, bağlantı nesnesini kapat.
    print("Her durumda çalıştırılacak kod bloğu, kullanımı zorunlu değildir.");
  }
}

Bazı durumlarda ise bizim özel olarak hata fırlatmamız gerekebilir. Yani program akışı istediğimiz gibi çalışmıyor ve bizim bir hata fırlatarak bu durumu bildirmemiz gerekiyorsa özel olarak hata oluşturabiliriz. Bunu yapmak için; throw ‘Özel hata mesajı’; veya throw NullThrownError; şeklinde gerçekleştirebiliriz. Bunu doğrudan kod içerisinde yaparsanız tabikide uygulamanız sonlanacaktır. Bunun için genel olarak hata yakalama mekanizmaları ve log kayıtlarının tutulduğu bir yapı oluşturulur. Ve ilgili hata durumu log kaydında saklanır.

Bu işlemlerin dışında kendimize özel hata sınıflarımızı yazabiliriz.(Custom Exception Class) Basit bir cüzdandan para alma işleminin hata yönetimini yazalım.

class WalletException implements Exception {
  String cause;
  WalletException(this.cause);
  
  String customMessage() {
    return "No cash";
  }
}

getCash(int amount) {
    const balance = 0;
    if((balance - amount) < 0) {
        throw new WalletException("Custom message");
    }
}

// Kullanımı
 try{
    getCash(100);
}catch(e) {
    print(e.customMessage()); // No cash
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir