Go by Example: Panic

Un panic generalmente significa que algo salió inesperadamente mal. Mayormente lo usamos para fallar rápidamente en errores que no deberían ocurrir durante la operación normal, o que no estamos preparados para manejar de manera elegante.

package main
import "os"
func main() {

Usaremos panic a lo largo de este sitio para verificar errores inesperados. Este es el único programa en el sitio diseñado para provocar un panic.

    panic("a problem")

Un uso común de panic es abortar si una función devuelve un valor de error que no sabemos cómo (o queremos) manejar. Aquí hay un ejemplo de panic si obtenemos un error inesperado al crear un archivo nuevo.

    _, err := os.Create("/tmp/file")
    if err != nil {
        panic(err)
    }
}

Ejecutar este programa causará que entre en pánico, imprima un mensaje de error y rastreos de goroutine, y salga con un estado no cero.

Cuando se dispara el primer panic en main, el programa se cierra sin alcanzar el resto del código. Si te gustaría ver al programa intentar crear un archivo temporal, comenta el primer panic.

$ go run panic.go
panic: a problem
goroutine 1 [running]:
main.main()
    /.../panic.go:12 +0x47
...
exit status 2

Nota que a diferencia de algunos lenguajes que utilizan excepciones para el manejo de muchos errores, en Go es idiomático utilizar valores de retorno que indican errores siempre que sea posible.

Siguiente ejemplo: Defer.