on clause
- Dart kursu
- Başlangıç
- Ders 104/116
- 5 dk
on ile belirli istisna türü yakalamayı öğrenirsin.
on clause
catch tüm hataları yakalar. Bazen yalnızca belirli bir türü yakalamak istersin. Bunun için on kullanılır. on FormatException catch (e) { ... } yalnızca FormatException türündeki hatayı yakalar; diğerleri yukarı yayılır.
Tipik kullanım: try { int.parse(girdi); } on FormatException { print("sayı değil"); } on Exception catch (e) { print("diğer hata: $e"); }. Burada her on farklı bir türü yakalar ve farklı mesaj verir. catch (e) adını vermeden de kullanılabilir; o zaman nesneye erişemezsin. on ile türü, catch (e) ile nesneyi alırsın.
Uygulama Sıra sende: türe göre yakala
try bloğu içinde int.parse'i sayı olmayan bir dizeyle çağır. on FormatException ile print("sayı değil") yazdır. Ardından on Exception catch (e) ile genel hata durumunda print(e) yazdır. Böylece farklı türler farklı mesaj verir.
Başlangıç kodu
void main() {
// try ile sayıya çevirmeyi dene
// özel tür için "sayı değil" yazdır
// genel tür için hatayı yazdır
}Örnek çözüm
void main() {
try {
int.parse("elma");
} on FormatException {
print("sayı değil");
} on Exception catch (e) {
print(e);
}
}Beklenen çıktı
sayı değil
on ve catch farkı
on FormatException yalnızca FormatException yakalar. catch (e) ise her şeyi yakalar. İkisini birlikte kullanabilirsin: on FormatException catch (e). Burada hem türü belirtirsin hem de nesneyi e'ye alırsın. Sadece on FormatException yazarsan nesneye erişemezsin.
Birden çok on yan yana yazılabilir; sırasıyla denenebilir. İlk eşleşen çalışır. on FormatException { ... } on Exception { ... } sırası önemlidir; çünkü FormatException da Exception'dır, bu yüzden daha özele öncelik verilmelidir. finally bloğu bu yapının sonuna da eklenebilir.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 on FormatException
try {
int.parse("elma");
} ____ FormatException {
print("sayı değil");
}
try {
int.parse("elma");
} on FormatException {
print("sayı değil");
}
Açıklama: on ile belirli tür yakalanır.
2 Birden çok on yan yana yazılırsa ne olur?
try {
isle();
} on FormatException {
...
} on Exception {
...
}- İlk eşleşen çalışır Doğru cevap
- Her blok çalışır
- Sadece son çalışır
- Hata verir
Açıklama: İlk eşleşen on bloğu çalışır.
3 on/catch eşleştir
| Kavram | Anlamı |
|---|---|
on FormatException |
yalnızca bu tür |
catch (e) |
tüm türler |
on ... catch (e) |
tür + nesne |
finally |
her zaman |