apperror

package
v0.0.0-...-55d528e Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2021 License: BSD-3-Clause Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrDummy = errors.New("Фиктивная ошибка")

ErrDummy можно использовать в качестве первого аргумента DoSomethingIf(err,...), если реальной ошибки нет

Functions

func ExitAppIf

func ExitAppIf(err error, exitCode int, format string, args ...interface{})

ExitAppIf резко закрывает приложение

func GracefullyExitAppIf

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

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

func HandlePanicInRequestHandlerMiddleware

func HandlePanicInRequestHandlerMiddleware() gin.HandlerFunc

HandlePanicInRequestHandlerMiddleware возвращает промежуточное ПО что для нашего известного "блага" паника восстанавливается и пишет 500, в противном случае печатает сообщение о панике и выходит из приложения.

func LogAttack

func LogAttack(c *gin.Context, err error)

LogAttack регистрирует запрос, который является подозреваемой атакой (для fail2ban)

func LogicalPanicIf

func LogicalPanicIf(subject interface{}, format string, args ...interface{})

LogicalPanicIf должен выполняться в обработчике веб-запросов и разворачивать только текущую горутину

func Panic500AndErrorIf

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

Panic500AndErrorIf похож на Panic500, но регистрирует ошибки. Мы должны регистрировать ошибки, чтобы знать, что не так и для fail2ban FIXME TODO - fail2ban и регистрация ошибок - это две разные вещи, напишите две функции!

func Panic500AndLogAttackIf

func Panic500AndLogAttackIf(err error, c *gin.Context, format string, args ...interface{})

Panic500AndLogAttackIf используется, когда ошибка может быть частью атаки. Мы собираемся поставить его на журнал (может быть разделённый журнал) в форме, понятной fail2ban

func Panic500If

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

Panic500If следует вызывать внутри обработчика http-запросов. Она прерывает обработку, разматывает стек и возвращает статус 500 с отформатированным сообщением

Types

type AppErr

type AppErr struct {
	Message string
}

AppErr - это ошибка на уровне приложения, которая не должна приводить к краху приложения. Она реализует интерфейс ошибок и должна использоваться в качестве возвращаемого значения. Для паники используйте Exception500

func NewAppErrf

func NewAppErrf(format string, args ...interface{}) *AppErr

NewAppErrf возвращает новый AppErr с сообщением

func (*AppErr) Error

func (be *AppErr) Error() string

type ErrorWithContents

type ErrorWithContents struct {
	Message  string
	Contents interface{}
}

ErrorWithContents это обёртка для любого значения. Может использоваться для преобразования паники в ошибку

func (ErrorWithContents) Error

func (i ErrorWithContents) Error() string

type Exception500

type Exception500 struct {
	// Сообщение отправляется клиенту
	Message string
}

Exception500 означает, что произошло что-то относительно плохое, и мы хотим вернуть код ошибки 500. Но проблема локальна для текущего обработчика события, и наша программа продолжает работать. Используйте Exception500 в качестве аргумента для panic. Для возврата значения ошибки рассмотрим AppErr

Jump to

Keyboard shortcuts

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