Exception sınıfı
- Dart kursu
- Başlangıç
- Ders 103/116
- 5 dk
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
void main() {
// BalanceError sınıfını tanımla
// try içinde hata fırlat
// hata durumunda yazdır
}Örnek çözüm
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?
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
String ____() => message;
String toString() => message;
Açıklama: toString metodu metin temsilini verir.