errutil

package module
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: May 7, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

README

Errutil

Библиотека для создания собственного типа реализующего интерфейс error. Позволят создавать, редактировать, объединять собственные ошибки.

Error trace

Основная идея заключается в том, чтобы дать возможность записать в ошибку весь её путь от самого начала возникновения, до завершения обработки текущего вызова.

В любой момент исполнения кода в ошибку можно добавить пользовательское сообщение, а так же сообщение для разработчика, которое может дополнить/заменить стек ошибки

TODO-шки

  1. Оптимизировать хранение ошибки
  2. Сделать ошибку потокобезопасной

Documentation

Index

Constants

View Source
const (
	CodePanic    string = "PANIC"
	CodeCritical string = "CRITICAL"
	CodeUser     string = "USER"
)

Variables

View Source
var (
	DefaultCode        = CodeCritical
	DefaultUserMessage = "Упс, что-то пошло не так. Попробуйте позже..."
)
View Source
var MaxStackTraceDepth = 50

MaxStackTraceDepth - максимальная глубина стека

View Source
var StackTraceAppPrefix = "github.com/kontora13-go"

StackTraceAppPrefix - префикс модуля, по которому определяется свойство InApp фрейма

Functions

func Cause

func Cause(err error) error

func Code

func Code(err error) string

func DevMessage

func DevMessage(err error) string

func DevMessages

func DevMessages(err error) []string

func Message

func Message(err error, defaultMessage ...string) string

func Messages

func Messages(err error) []string

func New

func New(message ...string) error

New - конструктор ошибки из списка строк

func NewWithCode

func NewWithCode(code string, message ...string) error

NewWithCode - конструктор ошибки из списка строк с указанием кода ошибки

func NewWithCodef

func NewWithCodef(code string, format string, args ...interface{}) error

NewWithCodef - конструктор ошибки из форматной строки с параметрами с указанием кода ошибки

func Newf

func Newf(format string, args ...interface{}) error

Newf - конструктор ошибки из форматной строки с параметрами

func Stack

func Stack(err error) string

func WithCode

func WithCode(err error, code string) error

func WithDevMessage

func WithDevMessage(err error, msg ...string) error

func WithDevMessagef

func WithDevMessagef(err error, format string, args ...interface{}) error

func WithMessage

func WithMessage(err error, msg ...string) error

func WithMessagef

func WithMessagef(err error, format string, args ...interface{}) error

func WithStack

func WithStack(err error) error

Types

type StackFrame

type StackFrame struct {
	// Путь к файлу, содержащему этот ProgramCounter
	File string `json:"file,omitempty"`

	// Номер строки в этом файле
	LineNumber int `json:"line_number,omitempty"`

	// Имя функции, в котором произошёл этот вызов
	Function string `json:"function,omitempty"`

	// Package, содержащий эту функцию
	Package string `json:"package,omitempty"`

	InApp bool `json:"in_app,omitempty"`

	PC uintptr `json:"pc,omitempty"`
}

StackFrame - структура для описания фрейма стека

func NewStackTrace

func NewStackTrace(skip int) []StackFrame

NewStackTrace создает стектрейс []StackFrame с использованием runtime.Callers.

func StackTrace

func StackTrace(err error) []StackFrame

func (*StackFrame) IsEmpty

func (frame *StackFrame) IsEmpty() bool

IsEmpty возвращает признак заполненности фрейма

func (*StackFrame) SourceLine

func (frame *StackFrame) SourceLine() (string, error)

SourceLine возвращает строку кода из исходного файла

func (*StackFrame) String

func (frame *StackFrame) String() string

String возвращает фрейм стека, отформатированный так же, как это делает go в runtime/debug.Stack()

Jump to

Keyboard shortcuts

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