Необработанная panic завершит процесс, но recover работает только из подходящего defer той же горутины. Фатальные ошибки runtime и принудительное завершение — не обычная panic.
Когда мы никак не можем отловить панику — приложение в любом случае завершится?
Необработанная panic завершит процесс, но recover работает только из подходящего defer той же горутины. Фатальные ошибки runtime и принудительное завершение — не обычная panic.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Необработанная panic завершит процесс, но recover работает только из подходящего defer той же горутины. Фатальные ошибки runtime и принудительное завершение — не обычная panic.
Recover в родительской горутине не перехватит panic дочерней: границу защиты ставят внутри её функции. При этом ошибки вроде исчерпания памяти или обнаруженного runtime фатального состояния могут завершать процесс без возможности восстановления. os.Exit также не запускает defer. Не используйте recover как замену обычной обработке ошибок и не продолжайте работу с потенциально повреждёнными инвариантами.