CodeBlanks Logo Icon CodeBlanks

try/catch

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

main.dart
void main() {
  // try bloğunda sayıya çevirmeyi dene
  // hata durumunda "sayı değil" yazdır
}

Örnek çözüm

main.dart
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?

main.dart
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

Soru
try {
  int.parse("elma");
} ____ (e) {
  print("sayı değil");
}
Cevap
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ı

Başlangıç bölümündeki tüm dersler