Documentation ¶
Index ¶
- Variables
- func ExitAppIf(err error, exitCode int, format string, args ...interface{})
- func GracefullyExitAppIf(err error, format string, args ...interface{})
- func HandlePanicInRequestHandlerMiddleware() gin.HandlerFunc
- func LogAttack(c *gin.Context, err error)
- func LogicalPanicIf(subject interface{}, format string, args ...interface{})
- func Panic500AndErrorIf(err error, format string, args ...interface{})
- func Panic500AndLogAttackIf(err error, c *gin.Context, format string, args ...interface{})
- func Panic500If(err error, format string, args ...interface{})
- type AppErr
- type ErrorWithContents
- type Exception500
Constants ¶
This section is empty.
Variables ¶
var ErrDummy = errors.New("Фиктивная ошибка")
ErrDummy можно использовать в качестве первого аргумента DoSomethingIf(err,...), если реальной ошибки нет
Functions ¶
func GracefullyExitAppIf ¶
GracefullyExitAppIf можно использовать, если ошибка считается не столь ужасной и мы можем позволить себе изящно выключить сервер. Ошибка не печатается
func HandlePanicInRequestHandlerMiddleware ¶
func HandlePanicInRequestHandlerMiddleware() gin.HandlerFunc
HandlePanicInRequestHandlerMiddleware возвращает промежуточное ПО что для нашего известного "блага" паника восстанавливается и пишет 500, в противном случае печатает сообщение о панике и выходит из приложения.
func LogAttack ¶
LogAttack регистрирует запрос, который является подозреваемой атакой (для fail2ban)
func LogicalPanicIf ¶
func LogicalPanicIf(subject interface{}, format string, args ...interface{})
LogicalPanicIf должен выполняться в обработчике веб-запросов и разворачивать только текущую горутину
func Panic500AndErrorIf ¶
Panic500AndErrorIf похож на Panic500, но регистрирует ошибки. Мы должны регистрировать ошибки, чтобы знать, что не так и для fail2ban FIXME TODO - fail2ban и регистрация ошибок - это две разные вещи, напишите две функции!
func Panic500AndLogAttackIf ¶
Panic500AndLogAttackIf используется, когда ошибка может быть частью атаки. Мы собираемся поставить его на журнал (может быть разделённый журнал) в форме, понятной fail2ban
func Panic500If ¶
Panic500If следует вызывать внутри обработчика http-запросов. Она прерывает обработку, разматывает стек и возвращает статус 500 с отформатированным сообщением
Types ¶
type AppErr ¶
type AppErr struct {
Message string
}
AppErr - это ошибка на уровне приложения, которая не должна приводить к краху приложения. Она реализует интерфейс ошибок и должна использоваться в качестве возвращаемого значения. Для паники используйте Exception500
func NewAppErrf ¶
NewAppErrf возвращает новый AppErr с сообщением
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