Стандартный сервер net/http перехватывает panic из ServeHTTP: процесс обычно продолжает работать, но текущий запрос прерывается. Panic в отдельно запущенной горутине этим recover не защищён.
Что произойдёт со всей программой, если panic возникнет в HTTP-обработчике?
Стандартный сервер net/http перехватывает panic из ServeHTTP: процесс обычно продолжает работать, но текущий запрос прерывается. Panic в отдельно запущенной горутине этим recover не защищён.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт со всей программой, если panic возникнет в HTTP-обработчике?
Ответ
Стандартный сервер net/http перехватывает panic из ServeHTTP: процесс обычно продолжает работать, но текущий запрос прерывается. Panic в отдельно запущенной горутине этим recover не защищён.
Сервер записывает стек и закрывает соединение либо сбрасывает HTTP/2-поток. Это не гарантированный HTTP 500: для контролируемого ответа нужен recovery middleware, пока заголовки ещё не отправлены. Неперехваченный panic в дочерней горутине может завершить весь процесс; восстановление действует только внутри той же горутины.
Источник: go.dev.