Как по цепочке обёрнутых ошибок определить, что причина относится к конкретному типу, не сравнивая тексты сообщений?
База Hintsage
Обработка ошибок
Errors, wrapping, panic/recover и проектирование ошибок.
Практика
Вопросы: Обработка ошибок
При панике в глубоко вложенной функции, при каком условии recover действительно остановит раскрутку стека?
Библиотечный пакет меняет внутреннюю реализацию: что должно определять, станет ли конкретная ошибка частью его публичного API?
Когда сравнение ошибок через == проверяет идентичность, а не только совпадение смысла?
Когда нарушение условия в функции Go оправдывает panic вместо возврата error?
В чём семантическая разница между обёрткой ошибки через %w и форматированием через %v при последующей обработке причины?
Что проверяет errors.Is для ошибки, объединяющей несколько причин через errors.Join?
Функция объявлена возвращающей error, но внутри возвращает nil-указатель конкретного типа ошибки. Чему будет равно сравнение результата с nil и почему?
Может ли recover в одной горутине перехватить panic, возникшую в другой?
Какой метод должен предоставить пользовательский тип ошибки, чтобы errors.Is продолжил поиск исходной причины?
Практическая ситуация: основная операция и закрытие ресурса в defer возвращают ошибки. Как спроектировать функцию, чтобы ошибка основной операции не была потеряна?
В обработчике errors.As не находит ошибку, хотя в цепочке есть тот же тип: значение ошибки возвращено по значению, а цель поиска задана как указатель. В чём причина?
Что должен делать метод Is пользовательской ошибки, чтобы errors.Is распознавал её как заранее определённую категорию?
Как ошибка в реализации Unwrap может привести к зависанию errors.Is?
Разберите последствие: что увидит внешний recover, если функция в процессе раскрутки после panic сама вызовет ещё одну panic из defer?
В сервисе на Go 1.20 обработчик считает nil от recover признаком отсутствия паники: что произойдёт после panic(nil)?
Сервис повторяет операции по тексту ошибки: какое свойство дизайна ошибки позволит заменить такой механизм?
Объясните механизм: почему errors.Unwrap не извлекает причины из ошибки, созданной errors.Join, и какой способ применяют для обхода всех причин?
Что изменится в обработке ошибки, если метод Error объявлен только у указателя на её тип?
После того как defer перехватил panic, продолжится ли выполнение функции с места сбоя?
Показано 1–20 из 50