try/catch
- Dart kursu
- Başlangıç
- Ders 100/116
- 5 dk
try/catch ile hata yakalamayı öğrenirsin.
try/catch
Bir işlem hata fırlatabilir; örneğin int.parse rakam olmayan bir dize alırsa FormatException fırlatır. Bu hatayı yakalamak için try bloğunun içine riskli kodu, catch bloğunun içine ise hata durumunda çalışacak kodu yazarsın.
Örnek: try { final n = int.parse("elma"); } catch (e) { print("sayı değil: $e"); }. Hata oluştuğunda program durmaz; catch bloğu çalışır ve program devam eder. e değişkeni fırlatılan nesneyi taşır. Bu sayede kullanıcıya nazik bir hata mesajı gösterilebilir.
catch parametresi
catch (e) içindeki e fırlatılan nesneyi taşır. Bu nesne genelde bir Exception veya Error'dur. e.toString() ile metin olarak alabilirsin; print(e) de aynı şeyi yapar.
Yığın izini (stack trace) de almak istersen ikinci bir parametre eklersin: catch (e, s). Burada s bir StackTrace'tir ve hatanın nereden geldiğini gösterir. Hata ayıklarken çok yararlıdır. catch'i parametresiz de yazabilirsin: catch { ... }; o zaman nesneye erişemezsin ama yine de hatayı yakalar.
Uygulama Sıra sende: parse hatasını yakala
Bir try bloğu içinde int.parse ile bir dizeyi sayıya çevirmeyi dene. catch (e) bloğunda print("sayı değil") yazdır. Böylece program hata vermek yerine nazik bir mesaj gösterir.
Başlangıç kodu
void main() {
// try bloğunda sayıya çevirmeyi dene
// hata durumunda "sayı değil" yazdır
}Örnek çözüm
void main() {
try {
int.parse("elma");
} catch (e) {
print("sayı değil");
}
}Beklenen çıktı
sayı değil
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 int.parse("elma") ne fırlatır?
try {
int.parse("elma");
} catch (e) {
print(e);
}- FormatException Doğru cevap
- TypeError
- RangeError
- Hata fırlatmaz
Açıklama: int.parse sayı olmayan dizede FormatException fırlatır.
2 catch bloğu
try {
int.parse("elma");
} ____ (e) {
print("sayı değil");
}
try {
int.parse("elma");
} catch (e) {
print("sayı değil");
}
Açıklama: catch bloğu hatayı yakalar.
3 try/catch eşleştir
| Kavram | Anlamı |
|---|---|
try |
riskli kodu taşır |
catch |
hatayı yakalar |
e |
fırlatılan nesne |
FormatException |
int.parse hatası |