errx

package module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2020 License: MIT Imports: 8 Imported by: 11

README

Errors extended

Замена и расширение стандартного пакета errors. Наследование, стек, контроль пользовательского вывода.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// 4хх
	ErrBadRequest    = New("400 Bad Request")
	ErrUnauthorized  = New("401 Unauthorized")
	ErrForbidden     = New("403 Forbidden")
	ErrNotFound      = New("404 Not Found")
	ErrNotAllowed    = New("405 Method Not Allowed")
	ErrNotAcceptable = New("406 Not Acceptable")
	ErrUnprocessable = New("422 Unprocessable Entity")

	// 5хх
	ErrInternal       = New("500 Internal Server Error")
	ErrNotImplemented = New("501 Not Implemented")
	ErrUnavailable    = New("503 Service Unavailable")
)

Standard HTTP errors

Functions

func As

func As(err error, target interface{}) bool

func ErrorModelAddDebug added in v1.2.0

func ErrorModelAddDebug(builder *flatbuffers.Builder, debug flatbuffers.UOffsetT)

func ErrorModelAddDetail added in v1.2.0

func ErrorModelAddDetail(builder *flatbuffers.Builder, detail flatbuffers.UOffsetT)

func ErrorModelAddNext added in v1.2.0

func ErrorModelAddNext(builder *flatbuffers.Builder, next flatbuffers.UOffsetT)

func ErrorModelAddStack added in v1.2.0

func ErrorModelAddStack(builder *flatbuffers.Builder, stack flatbuffers.UOffsetT)

func ErrorModelAddText added in v1.2.0

func ErrorModelAddText(builder *flatbuffers.Builder, text flatbuffers.UOffsetT)

func ErrorModelEnd added in v1.2.0

func ErrorModelEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT

func ErrorModelStart added in v1.2.0

func ErrorModelStart(builder *flatbuffers.Builder)

func ErrorModelStartDebugVector added in v1.2.0

func ErrorModelStartDebugVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT

func ErrorModelStartStackVector added in v1.2.0

func ErrorModelStartStackVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT

func Is

func Is(err error, targets ...error) bool

func KeyValueAddKey added in v1.2.0

func KeyValueAddKey(builder *flatbuffers.Builder, key flatbuffers.UOffsetT)

func KeyValueAddValue added in v1.2.0

func KeyValueAddValue(builder *flatbuffers.Builder, value flatbuffers.UOffsetT)

func KeyValueEnd added in v1.2.0

func KeyValueEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT

func KeyValueStart added in v1.2.0

func KeyValueStart(builder *flatbuffers.Builder)

func Unwrap

func Unwrap(err error) error

Types

type Debug

type Debug map[string]interface{}

type Error

type Error interface {
	/*
		Error - стандартный интерфейс ошибки.

		* Возвращает исходный текст, переданный в конструктор
		* Если был вызов WithArgs, возвращает форматированный исходный текст
	*/
	error

	/*
		Unwrap - движение по цепочке вниз, получение следующей ошибки

		* Перегрузка логики сравнения для использования со стандартным errors.Unwrap
		* Если цепочка кончилась, возвращает nil
	*/
	Unwrap() error

	/*
		Is - сравнение с ошибками в цепочке.

		* Перегрузка логики сравнения для использования со стандартным errors.Is
		* Если передан nil, возвращает false
		* Сначала сравнение на прямое равенство, затем по сообщению Error()
		* После - аналогичное сравнение с прототипом (если он быть создан с помощью With*)
		* Если был WithReason, то сравнение идет дальше по цепочке
	*/
	Is(err error) bool

	/*
		WithStack - формирование стека вызовов для локализации ошибки.

		* Стек только в текущей горутине выполнения
		* Для избежания проблем с гонками при обновлении, делает копию шаблонной ошибки
		* Если стек уже собран и копия выполнена, повторный вызов не меняет содержимого
		* Напрямую вызывается только если не нужны ни причина, ни форматирование
	*/
	WithStack() Error

	/*
		WithReason - добавление исходной ошибки для понимания причин возникновения (аналог xerrors.Wrap).

		* Добавляет указанную ошибку в цепочку
		* Автоматически вызывает WithStack
	*/
	WithReason(err error) Error

	/*
		WithDetail - добавление аргументов для форматирования сообщения.

		* Устанавливает форматированное детальное описание ошибки для пользователя
		* Автоматически вызывает WithStack
	*/
	WithDetail(tpl string, args ...interface{}) Error

	/*
		WithDebug - добавление объекта отладочных данных.

		* Автоматически вызывает WithStack
	*/
	WithDebug(dbg Debug) Error

	/*
		Export - конвертация в нейтральное от реализации представление
	*/
	Export() *View

	/*
		Pack - конвертация в байты для передачи через RPC или другими способами
	*/
	Pack() []byte
}

func New

func New(text string) Error

func Unpack added in v1.2.0

func Unpack(buf []byte) Error

type ErrorModel added in v1.2.0

type ErrorModel struct {
	// contains filtered or unexported fields
}

func GetRootAsErrorModel added in v1.2.0

func GetRootAsErrorModel(buf []byte, offset flatbuffers.UOffsetT) *ErrorModel

func (*ErrorModel) Debug added in v1.2.0

func (rcv *ErrorModel) Debug(obj *KeyValue, j int) bool

func (*ErrorModel) DebugLength added in v1.2.0

func (rcv *ErrorModel) DebugLength() int

func (*ErrorModel) Detail added in v1.2.0

func (rcv *ErrorModel) Detail() []byte

func (*ErrorModel) Init added in v1.2.0

func (rcv *ErrorModel) Init(buf []byte, i flatbuffers.UOffsetT)

func (*ErrorModel) Next added in v1.2.0

func (rcv *ErrorModel) Next(obj *ErrorModel) *ErrorModel

func (*ErrorModel) Stack added in v1.2.0

func (rcv *ErrorModel) Stack(j int) []byte

func (*ErrorModel) StackLength added in v1.2.0

func (rcv *ErrorModel) StackLength() int

func (*ErrorModel) Table added in v1.2.0

func (rcv *ErrorModel) Table() flatbuffers.Table

func (*ErrorModel) Text added in v1.2.0

func (rcv *ErrorModel) Text() []byte

func (*ErrorModel) UnPack added in v1.2.0

func (rcv *ErrorModel) UnPack() *ErrorModelT

func (*ErrorModel) UnPackTo added in v1.2.0

func (rcv *ErrorModel) UnPackTo(t *ErrorModelT)

type ErrorModelT added in v1.2.0

type ErrorModelT struct {
	Next   *ErrorModelT
	Text   string
	Detail string
	Stack  []string
	Debug  []*KeyValueT
}

func (*ErrorModelT) Pack added in v1.2.0

type KeyValue added in v1.2.0

type KeyValue struct {
	// contains filtered or unexported fields
}

func GetRootAsKeyValue added in v1.2.0

func GetRootAsKeyValue(buf []byte, offset flatbuffers.UOffsetT) *KeyValue

func (*KeyValue) Init added in v1.2.0

func (rcv *KeyValue) Init(buf []byte, i flatbuffers.UOffsetT)

func (*KeyValue) Key added in v1.2.0

func (rcv *KeyValue) Key() []byte

func (*KeyValue) Table added in v1.2.0

func (rcv *KeyValue) Table() flatbuffers.Table

func (*KeyValue) UnPack added in v1.2.0

func (rcv *KeyValue) UnPack() *KeyValueT

func (*KeyValue) UnPackTo added in v1.2.0

func (rcv *KeyValue) UnPackTo(t *KeyValueT)

func (*KeyValue) Value added in v1.2.0

func (rcv *KeyValue) Value() []byte

type KeyValueT added in v1.2.0

type KeyValueT struct {
	Key   string
	Value string
}

func (*KeyValueT) Pack added in v1.2.0

func (t *KeyValueT) Pack(builder *flatbuffers.Builder) flatbuffers.UOffsetT

type View

type View struct {
	Next   *View
	Text   string
	Detail string
	Stack  []string
	Debug  map[string]string
}

View - представление ошибки для простой работы с содержимым

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL