Junior — Middle
É possível capturar e tratar pânicos dentro de uma chamada defer em Go?
sobes.tech IA
Resposta da IA
Em Go, pode usar defer para lidar com pânicos, mas a chamada a defer em si não captura o pânico; é necessário capturá-lo dentro da função diferida usando recover().
Exemplo:
func safeCall() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Pânico capturado e tratado:", r)
}
}()
panic("algo correu mal")
}
Aqui, recover() é chamado dentro da função diferida e permite capturar o pânico que ocorre em safeCall. Assim, não é possível "capturar" diretamente em defer, mas pode-se tratá-lo dentro da função diferida com recover().