Middle
Como funciona a captura de pânico (panic/recover) em Go?
sobes.tech IA
Resposta da IA
Em Go, o mecanismo panic/recover é utilizado para lidar com situações excecionais.
panicprovoca o encerramento abrupto da goroutine atual, iniciando o processo de "pânico", no qual a pilha de chamadas é desenrolada.- Durante o desenrolar da pilha, as funções diferidas (
defer) são chamadas. - Se numa das funções diferidas for chamado
recover(), é possível capturar o pânico e evitar que o programa termine.
recover() devolve o valor passado para panic(), se for chamado dentro de uma função diferida durante um pânico. Se chamado fora de uma função diferida ou na ausência de pânico, retornará nil.
Exemplo:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Pânico capturado:", r)
}
}()
panic("algo correu mal")
}
Desta forma, panic inicia um erro, e recover permite tratá-lo e continuar a execução do programa.