Documentation
¶
Overview ¶
Package errs provides opinionated error primitives and error handling
It defines a small set of canonical error values, maps them to HTTP semantics, and exposes helpers for rendering safe, structured error responses.
Index ¶
- Variables
- func GetHTTPCode(err error) int
- func HTTPGetLogLevel(status int) slog.Level
- func HandleHTTP(ctx context.Context, w http.ResponseWriter, r *http.Request, err error, ...) (handled bool)
- func IsAny(err error, references ...error) bool
- func LogErr(ctx context.Context, err error, opts ...LogErrOption)
- func Mark(err error, marker error, opts ...Option) error
- func New(internalMsg string, opts ...Option) error
- func Newf(internalMsgFmt string, args ...any) error
- func Wrap(err error, msg string, opts ...Option) error
- type Error
- type ErrorHTTPResponse
- type Factory
- type LogErrOption
- type LogErrOptions
- type Option
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrNotImplemented = errors.New("not implemented") ErrRemoteServiceErr = errors.New("remote service error") ErrRateLimited = errors.New("rate limited") ErrInvalidArgument = errors.New("invalid argument") ErrMissingArgument = errors.New("missing argument") ErrOutOfRange = errors.New("out of range") ErrPermissionDenied = errors.New("permission denied") ErrExists = errors.New("already exists") ErrNotFound = errors.New("not found") ErrOutdated = errors.New("outdated") )
View Source
var DefaultLogErrOptions = LogErrOptions{ Logger: slog.Default(), LogLevel: slog.LevelError, LoggerAttrs: []any{}, }
Functions ¶
func GetHTTPCode ¶
func HTTPGetLogLevel ¶ added in v0.0.7
func HandleHTTP ¶ added in v0.0.3
func HandleHTTP( ctx context.Context, w http.ResponseWriter, r *http.Request, err error, opts ...LogErrOption, ) (handled bool)
func Mark ¶ added in v0.0.5
Mark marks an error with a sentinel error for errors.Is matching. Returns nil if err is nil. The original error message is preserved; marker is only for Is() matching.
Types ¶
type Error ¶ added in v0.0.3
type Error struct {
// Internal is the underlying cause.
// By being an 'error' type, it allows for %w wrapping.
Internal error
// Whether or not show user external message if Message field is empty
ExposeInternal bool
// SafeMessage is the "Safe" human-readable message intended for the end-user.
SafeMessage string
// LogDetails contains data for slog.
LogDetails []any
// UserDetails gets marshaled to the JSON response and sent to the user
UserDetails any
// TraceID or Domain can be added here for "Marking" where the error originated.
Domain string
// Markers holds sentinel errors for errors.Is matching
Markers []error
}
func (*Error) Error ¶ added in v0.0.3
Error implements the error interface. Returns Internal error message
type ErrorHTTPResponse ¶ added in v0.0.3
type Factory ¶ added in v0.0.6
type LogErrOption ¶
type LogErrOption func(*LogErrOptions)
func LogErrUseLogLevel ¶
func LogErrUseLogLevel(level slog.Level) LogErrOption
func LogErrUseLogger ¶
func LogErrUseLogger(logger *slog.Logger) LogErrOption
func LogErrUseLoggerAttrs ¶ added in v0.0.3
func LogErrUseLoggerAttrs(args ...any) LogErrOption
type LogErrOptions ¶
Click to show internal directories.
Click to hide internal directories.