文章目录 参考实例 参考 大佬写的源码分析 实例 package main import "fmt" func task(a []int) { defer func() { // 使用 recover 捕获错误信息 // 判断错误信息不为空时, 打印错误信息 if err := recover(); err != nil { fmt.Println(err) } }() // 需要加()执行 // 取值索引超过了参数切片的长度 fmt.Println(a[2]) } func main() { x := []int{1} task(x) fmt.Println("main end") }