English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Panic é um mecanismo que usamos para lidar com situações de erro. Situações de emergência podem ser usadas para interromper a execução da função. Quando uma função chama panic, sua execução é interrompida e o fluxo de controle é transferido para as funções atrasadas relacionadas.
O chamador da função também será encerrado e as funções atrasadas do chamador também serão executadas (se houver). Este processo continua até o final do programa. Agora, relatar o estado de erro.
Este seqüência de terminação é chamada de panic, que pode ser controlada pela função built-in recover.}
package main import "os" func main() { panic("Situação de erro") _ , err := os.Open("/tmp/file) if err != nil { panic(err) } }
Saída:
panic: Situação de erro goroutine 1 [running]: main.main() /Users/pro/GoglandProjects/Panic/exemplo de panic1.go:6 +0x39
package main import "fmt" func main() { fmt.Println("Chamando x a partir do main.") x() fmt.Println("Retornado de x.") } func x() { defer func() { if r := recover(); r != nil { fmt.Println("Recuperado em x", r) } }() fmt.Println("Executando x...") fmt.Println("Chamando y.") y(0) fmt.Println("Retornado normalmente de y.") } func y(i int) { fmt.Println("Executando y....") if i > 2 { fmt.Println("Panicking!") panic(fmt.Sprintf("%v", i)) } defer fmt.Println("Atrasado em y", i) fmt.Println("Imprimindo em y", i) y(i + 1) }
Saída:
Chamando x a partir do main. Executando x... Chamando y. Executando y.... Imprimindo em y 0 Executando y.... Imprimindo em y 1 Executando y.... Imprimindo em y 2 Executando y.... Panicking! Atrasado em y 2 Atrasado em y 1 Atrasado em y 0 Recuperado em x 3 Retornado de x.