Hata Yönetimi
Tulpar tanıdık try / catch / finally blokları ile throw ifadesini
birlikte kullanır. Değişkende tutabildiğiniz her şey fırlatılabilir —
metin, sayı, JSON nesnesi.
Temel try / catch
Section titled “Temel try / catch”try bloğu içindeki bir throw, kontrolü hemen eşleşen catch bloğuna
aktarır. Fırlatılan değer catch parametresine bağlanır (aşağıda e).
Yapılandırılmış hata fırlatma
Section titled “Yapılandırılmış hata fırlatma”Sadece string fırlatmak zorunda değilsiniz — JSON nesnesi fırlatmak,
çağırana code, message ve ek bağlam taşımanın olağan yoludur.
finally — temizliği her zaman çalıştır
Section titled “finally — temizliği her zaman çalıştır”finally bloğu, try normal bittiyse de fırlattıysa da, catch
kendisi yeniden fırlattıysa da çalışır. Dosya, soket veya mutex
serbest bırakma gibi çıkış yolundan bağımsız çalışması gereken
işler için kullanın.
İstisna fırlatılmadığında catch atlanır ama finally yine de
çalışır:
Ne zaman kullanmalı
Section titled “Ne zaman kullanmalı”Tulpar istisnaları normal kontrol akışı için kullanmaz — standart
kütüphane beklenen başarısızlık yolları için sentinel değerler döner
(-1, boş string, JSON null). throw / catch’i çağırının makul
şekilde öngöremeyeceği gerçek hata durumlarına ayırın:
- Üst seviye yeniden deneme döngüsünden kurtulan I/O hataları
- Çalışma anında tespit edilen programcı hataları (kötü girdi şekli, sözleşme ihlalleri)
- Yerel kod ya da üçüncü parti modüllerden gelen panic’leri sarmalama