ExpertiDict

Go · Intermediário · Inglês · Técnico

recover

/ɹɪˈkʌv.ɚ/função embutida

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'.

Veja também

Todos os termos de Go