English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Golang

Sentencias de control de Golang

Funciones y métodos de Golang

Estructuras de Golang

Cortes y arreglos de Golang

Cadenas (String) de Golang

Punteros de Golang

Interfaz de Golang

Concurrencia de Golang

Excepciones (Error) de Golang

Misceláneos de Golang

Pánico del lenguaje Go

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.

Ejemplo de pánico1:

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

Ejemplo de pánico2

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.