Go · Intermediário · Inglês · Técnico
recover
Função embutida que retoma o controle depois de um panic, devolvendo o valor passado a ele. Só funciona quando chamada diretamente dentro de uma função adiada por defer.
Onde usar
Servidores HTTP e workers usam recover para que um panic em uma requisição não derrube o processo inteiro. Costuma converter o panic em log e em um erro.
Em código
func seguro() (err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("panic: %v", r)
}
}()
panic("boom")
}Exemplos
The middleware calls recover so one bad request won't crash the server.
O middleware chama recover para que uma requisição ruim não derrube o servidor.
Recover only works inside a deferred function.
Recover só funciona dentro de uma função adiada.
Cuidado
Fora de um defer, recover retorna nil e não faz nada; ele também não pega panic ocorrido em outra goroutine.
Antônimos
panic
Origem
Do latim recuperare, 'recuperar'.