İçeriğe geç

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.

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).

Fırlat ve yakala

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.

Nesne fırlatma

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.

finally her zaman çalışır

İstisna fırlatılmadığında catch atlanır ama finally yine de çalışır:

İstisna olmayan akış

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