Stack trace
- Dart kursu
- Orta seviye
- Ders 102/116
- 5 dk
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
// risky fonksiyonunu tanımla
void main() {
// risky()'i çağır ve hatayı yakala
}Örnek çözüm
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
try { risky(); } catch (e, ____) { print(s); }
try { risky(); } catch (e, s) { print(s); }
Açıklama: ikinci parametre s, StackTrace'tir.