Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpErInr 37 of 280 menu
◀ ▶

Введение в свои ошибки в Go

Ошибка в Go может быть не только готовой строкой из пакета errors или текста из fmt.Errorf. «Своя ошибка хранит не только текст, но и поля, которые потом можно достать по типу. Так в одном значении держат путь к файлу, код операции или исходную причину, а наружу все равно отдают короткое сообщение.

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

Связь с интерфейсами здесь прямая: встроенный тип error требует один метод с результатом string. Любая структура с таким методом подходит под этот интерфейс без отдельной записи в коде. Вы уже видели неявное соответствие для своих интерфейсов; для ошибки правило то же.

В этом разделе разберем метод текста для своего типа, возврат такого значения из функции, обертку внешнего сообщения через %w и доставание конкретного типа из цепочки. Сначала научимся описывать структуру с полями, затем увидим, как по типу достают путь и внутреннюю причину, даже если ошибку обернули дополнительным текстом.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить