5.10 Recover
Giving up is usually the right response to a panic, but not always. It might be possible to recover in some way, or at least clean up the mess before quitting. For example, a web server that encounters an unexpected problem could close the connection rather than leave the client hanging, and during development, it might report the error to the client too.
If the built-in recover function is called within a deferred
function and the function containing the defer statement is
panicking, recover ends the current state of panic and returns
the panic value.
The function that was panicking does not continue where it left off
but returns normally.
If recover is called at any other time, it has no effect and
returns nil.
To illustrate, ...