知识卡片
recover只在延迟函数里拦截panic
内容
内建的 recover 函数用来阻止一次 panic 继续往上传播、避免程序崩溃,但它只在一种特定位置调用 才有效:必须写在一个用 defer 延迟调用的函数内部。发散:把它记成边界条件,能减少 Go 工程中看似偶然的误判。
参考来源
- 位置:《Head First Go语言程序设计》第12章《重新站起来:从失败中恢复》(源文件:_epub-src/index_split_002.html)
- 结论依据:原文围绕“内建的recover函数用来阻止一次panic继续往上传播、避免程序崩溃,但它只在一种特定位置调用才有效:必须写在一个用…”展开机制、顺序或组件关系说明;摘录中的关键步骤和术语支撑本卡片正文及结构图。
- 原始内容:是有意义的。它 应该永远不会发生,如果发生了,我们希望在程序以意外的方式运行之 前停止它。 代码示例及其输出如下所示,但是我们在输出中留下了一些空白。 看看你能不能把它们填上。 “recover”函数 将scanDirectory函数改为使用panic而不是返回错误,这大大简化了 错误处理代码。但panic也会导致程序崩溃,出现难看的堆栈跟踪。我们 宁愿只向…