Допустимо ли возвращать один экземпляр пользовательской ошибки из нескольких горутин, если он содержит изменяемые поля?
База Hintsage
Обработка ошибок
Errors, wrapping, panic/recover и проектирование ошибок.
Практика
Вопросы: Обработка ошибок
После успешного первого вызова recover в той же deferred-функции что вернёт второй вызов?
Во время паники внутри одной функции зарегистрировано несколько defer. В каком порядке они выполняются?
Добавление метода Unwrap к уже публичному типу ошибки: какое наблюдаемое изменение это может внести в поведение вызывающего кода?
Сравнение: чем отличается направление проверки errors.Is(обёртка, причина) от обратного порядка аргументов?
В тестовом помощнике нужно завершить текущую горутину без паники. Что выведет программа и выполнится ли строка после runtime.Goexit?
package main
import (
"fmt"
"runtime"
)
func main() {
done := make(chan struct{})
go func() {
defer func() {
fmt.Println("recover:", recover())
close(done)
}()
runtime.Goexit()
fmt.Println("after")
}()
<-done
}
Паника перехвачена через recover: содержит ли возвращённое значение трассировку стека?
В сценарии с panic передали указатель на тип ошибки, равный nil: почему проверка результата recover на nil может дать неверный вывод?
Когда пользовательскому типу ошибки стоит реализовать fmt.Formatter, а не помещать подробности в Error()?
В какой момент вычисляются аргументы вызова, отложенного через defer, если он выполнится во время panic?
Показано 41–50 из 50