Как в go получить код ошибки а не ее описание?
Как в go получить код ошибки а не ее описание? В дебагере у ошибки есть поле Code, но я не могу получить к нему доступ через точку.
Ответы (1 шт):
Автор решения: Pak Uula
→ Ссылка
В базовом интерфейсе error есть только один метод: Error() string
Никаких кодов ошибки в этом интерфейсе нет.
В дебагере вы видите конкретный тип ошибки, реализованный авторами той библиотеки, которой вы пользуетесь. Посмотрите, что это за тип, и потом приводите интерфейс error к этому типу. У приведённого значения поле Code будет видно, и компилятор вас не заругает.
res, err := some_package.SomeFunc()
if err != nil {
concrete_err, ok := err.(some_package.SomeError)
if ok {
// Переменная concrete_err типа SomeError, у неё поле Code доступно
} else {
// не угадали тип ошибки, нужен план Б
}
}