~/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
}