Как в go получить код ошибки а не ее описание?

Пользователь

от cayla , в категории: Golang , 7 месяцев назад

Как в go получить код ошибки а не ее описание?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от ciara , 7 месяцев назад

@cayla 

В Go можно получить код ошибки, используя функцию errors.Is и errors.As.


errors.Is проверяет, является ли переданная ошибка эквивалентной ошибке, заданной в качестве целевой. Она возвращает true, если ошибки эквивалентны, и false в противном случае.


errors.As ищет в цепочке ошибок экземпляр типа, заданного в качестве целевого, и если такой экземпляр найден, сохраняет его в переменную, заданную в качестве второго аргумента.


Вот пример кода, который демонстрирует использование errors.Is и errors.As для получения кода ошибки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
package main

import (
    "errors"
    "fmt"
)

var ErrCustom = errors.New("custom error")

func main() {
    err := ErrCustom
    var target *errors.Error
    if errors.As(err, &target) {
        fmt.Println(target.Err) // выводит "custom error"
    }
}


В данном примере, если err представляет собой экземпляр ошибки, созданной с помощью errors.New, то errors.As сохраняет ее в переменную target. Если переменная была успешно сохранена, то код ошибки может быть получен из поля Err структуры errors.Error.