golang recover panic 流程控制的可达与不可达
--------------------------流程控制可达----------------------------- package main import "fmt" func explode() { // Cause a panic. panic("WRONG") } func throwPanic(f func()) { defer func() { if err := recover(); err != nil { // Handle our error. fmt.Println("FIX") fmt.Println("ERR", err) } }() f() fmt.Println(" finish") } func main() { throwPanic(explode) fmt.Println(" reach here ")//可达 } --------------------------流程控制不可达----------------------------- package main import "fmt" func explode() { // Cause a panic. panic("WRONG") } func main() { // Handle errors in defer func with recover. defer func() { if err := recover(); err != nil { // Handle our error. fmt.Println("FIX") fmt.Println("ERR", err) } }() // This causes an error. explode() fmt.Println(" reach here ")// 达不到 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步