Exception hiyerarşisi
- Dart kursu
- Orta seviye
- Ders 100/116
- 5 dk
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
// AppException sınıfını tanımla, Exception'ı extends et
void main() {
// AppException fırlat, yakala ve mesajı yazdır
}Örnek çözüm
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
class AppException extends ____ { final String message; AppException(this.message); }
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 |