作为一个 gophper,我相信你对于 panic 和 recover 肯定不陌生,但是你有没有想过。当我们执行了这两条语句之后。底层到底发生了什么事呢?前几天和同事刚好聊到相关的话题,发现其实大家对这块理解还是比较模糊的。希望这篇文章能够从更深入的角度告诉你为什么,它到底做了什么事? 思考 一、为什么会中止运行 func main() { panic("EDDYCJY.") } 输出结果: $ go run main.go panic: EDDYCJY. goroutine 1 [running]: main.main() /Users/eddycjy/go/src/github.com/EDDYCJY/awesomeProject/main.go:4 +0x39 exit status 2 请思考一下,为什么执行 panic 后会导致应用程序运行中止?(而不是单单说执行了 panic 所以就结束了这么含糊)