English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Panic es un mecanismo que usamos para manejar situaciones de error. Las emergencias pueden usarse para detener la ejecución de una función. Cuando una función llama a panic, su ejecución se detiene y el flujo de control se transfiere a las funciones atrasadas relacionadas.
El llamador de esta función también será terminado, y las funciones atrasadas del llamador también se ejecutarán (si las hay). Este proceso continuará hasta que el programa finalice. Ahora reporte el estado de error.
Esta secuencia de terminación se llama pánico y puede ser controlada por la función integrada recover.
package main import "os" func main() { _,/tmp/archivo) if err != nil { panic(err) } }
Salida:
pánico: Situación de error goroutine 1 [corriendo]: main.main() /Usuarios/pro/Proyectos Gogland/Pánico/Ejemplo de pánico1.go:6 +0x39
package main import "fmt" func main() { fmt.Println("Llamando a x desde main.") x() fmt.Println("Regresado desde x.") } func x() { defer func() { if r := recover(); r != nil { fmt.Println("Recuperado en x", r) } }() fmt.Println("Ejecutando x...") fmt.Println("Llamando a y.") y(0) fmt.Println("Regresado normalmente desde y.") } func y(i int) { fmt.Println("Ejecutando y....") if i > 2 { fmt.Println("¡Pánico!") panic(fmt.Sprintf("%v", i)) } defer fmt.Println("Deferido en y", i) fmt.Println("Imprimiendo en y", i) y(i + 1) }
Salida:
Llamando a x desde main. Ejecutando x... Llamando a y. Ejecutando y.... Imprimiendo en y 0 Ejecutando y.... Imprimiendo en y 1 Ejecutando y.... Imprimiendo en y 2 Ejecutando y.... ¡Pánico! Deferido en y 2 Deferido en y 1 Deferido en y 0 Recuperado en x 3 Regresado de x.