CodeBlanks Logo Icon CodeBlanks

Exception hiyerarşisi

Exception hiyerarşisi ve özel istisnaları öğrenirsin.

Exception hiyerarşisi

Dart'ta tüm sorunlar Object'ten türetilir. Exception soyut bir arayüzdür; kendi özel istisnalarını class MyError extends Exception ile tanımlarsın.

Exception'ı extends ederek hiyerarşi kurabilirsin: class AppException extends Exception, class NetworkException extends AppException. Böylece on AppException hem AppException'ı hem de alt sınıflarını yakalar.

catch bloğunda on SpecificException catch (e) ile belirli türü yakalarsın. Bu, hata türüne göre farklı işleme yapmanı sağlar.

Özel istisna örneği

Bir özel istisna genelde bir message alanı taşır: class AppException extends Exception { final String message; AppException(this.message); }.

Fırlatmak için throw AppException('bağlantı kurulamadı'); yazarsın. Yakalamak için try { ... } on AppException catch (e) { print(e.message); } kullanırsın.

on AppException catch (e) sadece AppException ve alt sınıflarını yakalar. Genel catch (e) ise her şeyi yakalar.

Uygulama Özel istisna sınıfı

AppException sınıfı tanımla: Exception'ı extends etsin, final String message alanı ve yapıcısı olsun. main içinde throw AppException('bağlantı kurulamadı') fırlat ve on AppException catch (e) ile yakalayıp print(e.message) yazdır.

Başlangıç kodu

main.dart
// AppException sınıfını tanımla, Exception'ı extends et

void main() {
  // AppException fırlat, yakala ve mesajı yazdır
}

Örnek çözüm

main.dart
class AppException extends Exception {
  final String message;
  AppException(this.message);
}

void main() {
  try {
    throw AppException('bağlantı kurulamadı');
  } on AppException catch (e) {
    print(e.message);
  }
}

Beklenen çıktı

bağlantı kurulamadı

Soru ve cevaplar

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

1 Özel istisna tanımlamanın doğru yolu hangisi?

  • class MyError : Exception
  • Exception class MyError
  • class MyError extends Exception Doğru cevap
  • MyError implements new Exception

Açıklama: Dart'ta extends ile Exception'dan türetirsin.

2 Exception türet

Soru
class AppException extends ____ { final String message; AppException(this.message); }
Cevap
class AppException extends Exception { final String message; AppException(this.message); }

Açıklama: Exception'ı extends edersin.

3 Exception hiyerarşisi parçaları

Kavram Anlamı
Exception Temel istisna
extends Türetme anahtarı
throw Fırlatma
on ... catch Yakalama

Orta seviye bölümündeki tüm dersler