Sobes.tech
Junior — Middle

Explique o mecanismo de interação entre as funções panic, defer e recover na linguagem de programação Go.

sobes.tech IA

Resposta da IA

Em Go, as funções panic, defer e recover estão relacionadas com o tratamento de erros e situações excecionais.

  • panic — provoca a terminação abrupta da função atual e inicia o processo de "pânico", que se propaga pela pilha de chamadas, chamando funções defer adiadas.
  • defer — adia a execução de uma função até à saída da função atual, permitindo realizar limpeza ou processamento após um panic.
  • recover — permite "capturar" um pânico dentro de uma função adiada e evitar que o programa termine.

Exemplo:

func exemplo() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recuperado do pânico:", r)
        }
    }()

    fmt.Println("Antes do pânico")
    panic("algo correu mal")
    fmt.Println("Isto não será executado")
}

Aqui, panic provoca um erro, defer com recover captura-o e o programa continua a funcionar sem falhas.