CodeBlanks Logo Icon CodeBlanks

Stack trace

Stack trace ve hata ayıklamayı öğrenirsin.

Stack trace

Bir istisna fırlatıldığında Dart, o anki çağrı yığınını (call stack) kaydeder. Buna stack trace denir.

catch bloğunda ikinci parametre ile yakalanır: try { ... } catch (e, s) { print(s); }. Burada s bir StackTrace nesnesidir.

Stack trace, hatanın nereden kaynaklandığını (dosya, satır, fonksiyon) gösterir. Hata ayıklamanın temel aracıdır; üretimde loglama araçlarına gönderilir.

Stack trace örneği

Tipik kullanım: try { riskyOperation(); } catch (e, s) { print('Hata: $e'); print(s); }.

s bir StackTrace nesnesidir; toString() ile metne çevrilir. print(s) bunu otomatik yapar.

Geliştirmede konsola yazdırırsın; üretimde bir loglama servisine gönderirsin. Stack trace olmayan bir hata gizemli kalır.

Uygulama Hatayı ve izi yakala

void risky() { throw StateError('bozuk durum'); } fonksiyonunu yaz. main içinde try { risky(); } catch (e, s) { print(e); } ile çağır. catch (e, s) ikinci parametre s StackTrace'tir; biz e'yi yazdırıyoruz.

Başlangıç kodu

main.dart
// risky fonksiyonunu tanımla

void main() {
  // risky()'i çağır ve hatayı yakala
}

Örnek çözüm

main.dart
void risky() {
  throw StateError('bozuk durum');
}

void main() {
  try {
    risky();
  } catch (e, s) {
    print(e);
  }
}

Beklenen çıktı

Bad state: bozuk durum

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Stack trace parçaları

Kavram Anlamı
catch (e, s) StackTrace yakalar
s StackTrace değişkeni
print(s) İzlemeyi yazdırır
throw İstisnayı fırlatır

2 catch bloğunda StackTrace nasıl yakalanır?

  • catch (e, s) Doğru cevap
  • catch (s, e)
  • catch (e)
  • catch (s)

Açıklama: catch (e, s) ikinci parametre olarak StackTrace'i alır.

3 StackTrace parametresi

Soru
try { risky(); } catch (e, ____) { print(s); }
Cevap
try { risky(); } catch (e, s) { print(s); }

Açıklama: ikinci parametre s, StackTrace'tir.

Orta seviye bölümündeki tüm dersler