Dart Dilinde Exception Kavramı (try, catch, finally)

Dart dilinde exception kavramı, Türkçede istisna olarak adlandırılır ve hata ayıklama işlemlerini yapmak için kullanılır.

Dart Dilinde Exception Kavramı

Diğer pek çok programlama dilinde görülen hata ayıklama işlemleri Dart’ta da görülmektedir. Zira hatalı bir kod yazılırsa Dart bizim için bir hata nesnesi meydana getirir. Eğer bu çok ciddi bir hataysa error adında bir nesne üretirken, üzerinde birtakım işlemler yapılabiliyor ve o hatayı atlayabiliyorsak da exception adında bir nesne üretmektedir.

try – on – catch – throw – finally

Kabaca tanımlarsak:

  • try

try bloğu içerisine hata (istisna = exception) oluşturabilecek ilgili kod parçası yazılır.

try { 
   // hata olusturabilecek kod
} 
  • on

Eğer spesifik bir hata tipi belirtilmek isteniyorsa on bloğu kullanılır.

on Exception { 
   // spesifik bir hata tipi belirtildiğinde çalışacak kod
}  
  • catch

Eğer genel bir hata durumu oluşmuşsa çalışacak kod parçası catch bloğu içerisine yazılır.

catch Exception { 
   // genel bir hata oluştuğunda çalışacak kod
}
  • finally

Hata olsa da olmasa da her halükarda çalıştırılacak kod finally bloğu içerisine yazılır.

finally { 
   // hata olsun ya da olmasın her halükarda çalışacak kod 
} 
  • throw

Kendi hatamızı oluşturmak için kullanılır.

Kavramlarımızı açıkladığımıza göre örnek bir program yazalım.

main() { 
   int x = 10; 
   int y = 0; 
   int bolum;  
   
   try {
     bolum = x ~/ y;
     print (bolum);
   } 
   on IntegerDivisionByZeroException { 
     print("Bir sayı sıfıra bölünemez"); 
   } 
}  

Çıktı: Bir sayı sıfıra bölünemez

main() { 
   int x = 10; 
   int y = 0; 
   int bolum;  
   
   try {
     bolum = x ~/ y;
     print (bolum);
   } 
   catch (e) { 
     print("Hata oluştu. Bir sayı sıfıra bölünemez"); 
   } 
}  

Çıktı: Hata oluştu. Bir sayı sıfıra bölünemez

main() { 
   int x = 10; 
   int y = 0; 
   int bolum;  
   
   try {
     bolum = x ~/ y;
     print (bolum);
   } 
  /*
   catch (e) { 
     print("Hata oluştu. Bir sayı sıfıra bölünemez"); 
   } */
  
  finally { 
    print ("Hata olsun ya da olmasın her halükarda burası çalışır.");
  } 
}  

Çıktı:

Hata olsun ya da olmasın her halükarda burası çalışır.
Uncaught Error: Unsupported operation: Result of truncating division is Infinity: 10 ~/ 0

import 'dart:math';

main() {
  try {
    double deger = kareKokunuAl(-10);
    print("Değer ${deger.toStringAsFixed(2)}");
  } on FormatException catch (e) {
    print(e.message);
  } catch (e) {
    print(e);
  }
}

double kareKokunuAl(int i) {
  try {
    if (i < 0) {
      throw FormatException("Negatif sayıların karekökü olamaz!");
    } else
      return sqrt(i);
  } on FormatException catch (e) {
    print(e.message + " metot içindeyim");
  } finally {
    return 0;
  }
}

Çıktı:

Negatif sayıların karekökü olamaz! metot içindeyim
Değer 0.00

Dart Hata Türleri

Yaygın olarak karşılaşılan hata türleri aşağıda derlenmiştir:

  • DeferredLoadException: Ertelenmiş bir kütüphane yüklenemediğinde alınan hata türüdür.
  • FormatException: Bir string veya başka bir veri beklenen bir formata sahip olmadığında ortaya çıkan hata türüdür.
  • IntegerDivisionByZeroException: Bir sayı sıfıra bölündüğünde alınan hata türüdür.
  • IOException: Tüm Girdi-Çıktıyla ilgili hatalar için temel sınıf.
  • IsolateSpawnException: Bir izolat oluşturulamadığında alınan hata türüdür.
  • Timeout: Asenkron: Bir sonuç beklenirken zaman aşımı gerçekleştiğinde alınan hata türüdür.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu