Sarmalama Kök Nedeni Kaybediyor (ARCH5154)
Anahtar go.logging.error-wrap-loses-cause · Önem warning · Kategori logging
Bir handler içinde yeni bir hata döndürürken orijinal hatayı sarmalamamak, kök nedeni ve çağrı zincirini yok eder. %w doğrulayıcısı, errors.Is/errors.As ile inceleme yapılabilmesi için orijinal hatayı korur.
Hatalı
Bölüm başlığı “Hatalı”func load(id string) (*User, error) { u, err := db.Get(id) if err != nil { return nil, errors.New("user lookup failed") } return u, nil}func load(id string) (*User, error) { u, err := db.Get(id) if err != nil { return nil, fmt.Errorf("user lookup %s: %w", id, err) } return u, nil}Düzeltme
Bölüm başlığı “Düzeltme”Hatayı yeniden döndürürken fmt.Errorf ile %w kullanarak orijinal hatayı sarmalayın.