Logla ve Döndür Tekrarı (ARCH5166)
Anahtar go.logging.log-and-return-error · Önem warning · Kategori logging
Bir hatayı loglayıp aynı handler içinde tekrar döndürmek, hata çağrı yığınında yukarı çıkarken yeniden loglanacağı için yinelenen log satırlarına yol açar. Hata ya loglanmalı ya da sarmalanarak döndürülmelidir, ikisi birden değil.
Hatalı
Bölüm başlığı “Hatalı”func fetch(log *slog.Logger, id string) (*Doc, error) { d, err := repo.Get(id) if err != nil { log.Error("fetch failed", "err", err) return nil, err } return d, nil}func fetch(id string) (*Doc, error) { d, err := repo.Get(id) if err != nil { return nil, fmt.Errorf("fetch %s: %w", id, err) } return d, nil}Düzeltme
Bölüm başlığı “Düzeltme”Hatayı sarmalayarak döndürün ve loglamayı yalnızca en üst sınır katmanında bir kez yapın.