知识卡片
Recover只救同栈
内容
recover 只能在触发 panic 的 goroutine 的延迟调用链中生效,不能跨 goroutine 捕获崩溃。发散:每个 goroutine 都是独立执行边界,容错也要在边界内布置。实现细节见[[PanicRecover依赖Defer]]。
参考来源
- 位置:《Go语言入门到实战(共3册)》第8章《Go语言编程之旅:附录B goroutine与panic、recover的小问题》(源文件:_epub-src/text/part0077.html)
- 结论依据:原文围绕“recover只能在触发panic的goroutine的延迟调用链中生效,不能跨goroutine捕获崩溃”展开机制、顺序或组件关系说明;摘录中的关键步骤和术语支撑本卡片正文及结构图。
- 原始内容:) { defer close(exit) // 执行 defer println("a") // 执行 func() { defer func() { println("b", recover() == nil) // 执行,recover返回nil }() func() { // 在多层调用中执行Goexit println("c") runtime.G…