Documentation
¶
Index ¶
- Constants
- func ClearCodeRegister()
- func IsRegistered(c Code) bool
- func RegisterCode(c Code, HTTP int, GRPC codes.Code, desc string)
- func UnregisterCode(c Code)
- func Wrap(err error, message string, stacktrace ...any) error
- func WrapCode(err error, message string, code Code, stacktrace ...any) error
- type Builder
- type Code
- type Error
Examples ¶
Constants ¶
const CodeSize = 15
CodeSize is the number of codes defined in the STL library. All codes defined by default are mapped from 0 to CodeSize - 1. CodeSize can be useful when creating additional codes for example:
const ( // MyCode is a custom code. MyCode Code = errs.CodeSize + iota // = 15 ExtraCode // = 16 )
Variables ¶
This section is empty.
Functions ¶
func ClearCodeRegister ¶ added in v0.2.0
func ClearCodeRegister()
ClearCodeRegister removes all registration made with the function RegisterCode
func IsRegistered ¶ added in v0.2.0
IsRegistered returns true if a custom implementation or override is being used for the code.
func RegisterCode ¶ added in v0.2.0
RegisterCode registers a new code OR overrides an existing one.
func UnregisterCode ¶ added in v0.2.0
func UnregisterCode(c Code)
UnregisterCode unregisters the custom implementation or override of a code provided from the RegisterCode function. When a code is unregistered, UnregisterCode is a no-op.
Types ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
Example ¶
b := B().Code(Unknown).Msg("unknown error").Details("details")
err := b.Err()
str, _ := json.Marshal(err)
fmt.Println(string(str))
Output: {"code":"unknown","message":"unknown error"}
type Code ¶
type Code int
Code is the type that represents an error code. It can map to HTTP and gRPC codes. In order to properly work with custom codes or code overrides: use the RegisterCode function after creating your new Code instance.
const ( // Unknown is the default error code. Unknown Code = iota // Canceled indicates the operation was canceled or unavailable because it was cancelled. Canceled // InvalidArgument is used when the client sends invalid arguments. InvalidArgument // DeadlineExceeded means operation expired before completion. This doesn't necessarily mean that the operation failed. // It is possible that the operation succeeded but the deadline was exceeded. DeadlineExceeded // Unauthenticated is used when the client is not authenticated. Unauthenticated // NotFound is used when the requested resource is not found. NotFound // AlreadyExists is used when the resource already exists. AlreadyExists // Forbidden is used when the client is not authorized to perform the requested operation. Forbidden // ResourceExhausted is used when the client has exhausted some resource. ResourceExhausted // FailedPrecondition is used when the client sends a request that is not allowed in the current state. FailedPrecondition // Aborted is used when the client sends a request that cannot be completed due to a conflict e.g. a concurrency issue. Aborted // OutOfRange means that the operation was attempted past the valid range. OutOfRange // Internal is used when an internal error occurs. Internal Unavailable // DataLoss is used when the service has lost some data. DataLoss )
func (Code) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface and defines how a Code should be marshaled to JSON. By default, it marshals to a string representation defined by String function.
type Error ¶
type Error struct {
// Code is the error code of the error. When marshaled to JSON, it will be a string.
Code Code `json:"code"`
// Msg is the user-friendly message returned to the client.
Msg string `json:"message"`
// Details is the internal error message returned to the developer.
Details []any `json:"-"`
}