İçeriğe geç

Yeniden Fırlatma İz Kaybı (ARCH6154)

Anahtar ruby.logging.reraise-loses-cause · Önem info · Kategori logging

Bir handler içinde cause bağlamadan yeni bir istisna fırlatmak, orijinal yığın izini ve kök nedeni yok eder. Bu, hata ayıklamayı çok zorlaştırır.

def load_profile(id)
fetch(id)
rescue Net::HTTPError
raise ProfileError, "Profil yüklenemedi"
end
def load_profile(id)
fetch(id)
rescue Net::HTTPError => e
raise ProfileError, "Profil yüklenemedi: #{id}"
end

Ruby orijinal istisnayı otomatik cause olarak bağlar; mevcut handler değişkenini koruyun ve yeni istisnayı bir rescue => e içinde fırlatın.