CodeBlanks Logo Icon CodeBlanks

Exception sınıfı

Exception sınıfı ve özel istisnaları öğrenirsin.

Exception sınıfı

Dart'ta tüm istisnalar Exception arabirimini uygular. Kendi istisna sınıfını yazabilirsin; bu, özel durumu açıkça adlandırmanı sağlar. class BalanceError implements Exception { final String message; BalanceError(this.message); String toString() => message; }

Bu sınıfı throw BalanceError("yetersiz bakiye") ile fırlatırsın. catch bloğunda türü göre yakalayabilirsin: catch (e) { if (e is BalanceError) ... }. Kendi istisna sınıfın, hatanın nedenini açıkça taşır; çağıran da buna göre davranır. toString metodunu ezmek print(e) çıktısını anlamlı yapar.

toString'i ezmek

Bir istisna sınıfında toString metodunu ezdiğinde print(e) çıktısı senin istediğin metni gösterir. Varsayılan toString sınıf adını ve karmaşık bir tanımlayıcıyı basar; bu da logları okunmaz yapar.

Örnek: String toString() => "BalanceError: $message";. Böylece print(e) çıktısı BalanceError: yetersiz bakiye olur. Hata ayıklarken çok yararlıdır. Aynı zamanda final String message alanı, hatanın nedenini taşır; catch bloğunda e.message ile erişebilirsin (önce is ile türü denetleyerek).

Uygulama Sıra sende: özel istisna sınıfı

BalanceError adında, Exception arabirimini uygulayan bir sınıf tanımla. final String message alanı ve BalanceError(this.message) kurucusu olsun. toString yöntemi message'ı döndürsün. main içinde bu sınıftan bir hata fırlat ve catch (e) ile print(e) yazdır.

Başlangıç kodu

main.dart
void main() {
  // BalanceError sınıfını tanımla
  // try içinde hata fırlat
  // hata durumunda yazdır
}

Örnek çözüm

main.dart
class BalanceError implements Exception {
  final String message;
  BalanceError(this.message);
  String toString() => message;
}

void main() {
  try {
    throw BalanceError("yetersiz bakiye");
  } catch (e) {
    print(e);
  }
}

Beklenen çıktı

yetersiz bakiye

Soru ve cevaplar

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

1 Exception eşleştir

Kavram Anlamı
Exception genel arabirim
implements sınıfı bağlar
toString metni verir
final String değişmez mesaj

2 Kendi istisna sınıfımız hangi arabirimi uygular?

main.dart
class BalanceError ____ Exception {
  final String message;
  BalanceError(this.message);
}
  • implements
  • extends
  • with
  • abstract Doğru cevap

Açıklama: implements Exception ile arabirim uygulanır.

3 toString override

Soru
String ____() => message;
Cevap
String toString() => message;

Açıklama: toString metodu metin temsilini verir.

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