Use recover when:
You're writing a library and don't want to crash the caller.
You're handling HTTP requests and want to log the panic.
You need to clean up before your program exits.
Most code shouldn't recover. Let panics crash so you find bugs. Servers commonly recover to keep handling other requests.