Panic помогает обрабатывать ошибки в Golang, завершая программу с настраиваемым сообщением об ошибке. 1 Когда функция вызывает panic, её выполнение останавливается, все отложенные вызовы выполняются нормально, затем функция возвращает управление вызывающей. 4 Процесс продолжается вверх по стеку, пока все функции в текущей го-процедуре не завершат выполнение, после чего аварийно останавливается программа. 4
Recover помогает обрабатывать ошибки, восстанавливая контроль над паникующей го-процедурой. 4 Во время нормального выполнения recover возвращает nil и не имеет других эффектов. 4 Если же текущая го-процедура паникует, то вызов recover возвращает значение, которое было передано panic, и восстанавливает нормальное выполнение. 4
Recover используется в тех случаях, когда паника не должна привести к завершению всей программы. 2 Например, ошибка в одном из клиентских подключений веб-сервера не должна привести к сбою всего серверного приложения. 2