İçeriğe geç

~/labs/errx

errx

Servisler için taşıma katmanından bağımsız bir hata sınıflandırması: alanınız hatanın türünü döner, taşıma katmanı ne anlama geldiğine karar verir.

Go servisleri için taşıma katmanından bağımsız bir hata sınıflandırması. Alan ve uygulama katmanlarınız bir Kind ile *errx.Error döner; bunun ağ üzerinde ne anlama geldiğine taşıma katmanınız karar verir.

errx'in kendisi HTTP handler'ları, framework'leri ya da yanıt zarflarını bilmez ve standart kütüphane dışında hiçbir bağımlılığı yoktur.

Kurulum

go get github.com/oshturhq/errx

Özellikler

  • Her biri bir HTTP durum koduna eşlenmiş, sabit ve kararlı hata türleri
  • Her tür için kurucular: istemci türleri bir mesaj alır, sunucu türleri asıl hatayı sarar
  • fmt.Errorf("%w") zincirleri boyunca çalışan Is, KindOf, StatusOf, From ve IsRetryable
  • Unwrap uygular; errors.Is ve errors.As çalışmaya devam eder
  • Yeniden deneme politikaları ve kuyruğa geri alma kararları için IsClient, IsServer ve IsRetryable
  • Türler, makinece okunabilir hata kodu olarak kullanılabilen kararlı snake case metinlerdir

Örnek

func (s *UserService) Get(ctx context.Context, id string) (*User, error) {
    user, err := s.users.ByID(ctx, id)
    if err != nil {
        return nil, errx.NotFound("user not found")
    }

    return user, nil
}