Ответ
Механизм panic-defer-recover в Go используется для обработки исключительных ситуаций.
panic– вызывает аварийное завершение функции, начинает раскручивать стек вызовов.defer– откладывает выполнение функции до завершения окружающей функции (даже приpanic).recover– останавливает панику и возвращает переданное вpanicзначение. Работает только внутриdefer.
Пример:
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered:", r)
}
}()
panic("something went wrong")
}
Вывод: Recovered: something went wrong.
Важно: recover работает только в той же горутине, где вызвана panic. Не стоит злоупотреблять этим механизмом – в Go предпочитают явную обработку ошибок через error.