知识卡片

接不住的panic应该重新抛出

专业/工作 · 1374.a.1

内容

用 recover 兜底 panic 时,一个常见陷阱是把它写成”来者不拒”:不管 panic 值是什么类型、是不 是自己预期要处理的那种错误,一律吞掉。发散:”能处理的错误就处理,处理不了的错误就让它继续暴露”是防御性代码里普遍成立的原则——一个只吞不 抛的 recover,会把本该让人第一时间看到的异常状况伪装成”一切正常”,这比程序直接崩溃更危险, 因为问题被隐藏了而不是被解决了。

参考来源

- 位置:《Head First Go语言程序设计》第12章《重新站起来:从失败中恢复》(源文件:_epub-src/index_split_002.html) - 结论依据:原文在该章节围绕“用recover兜底panic时,一个常见陷阱是把它写成"来者不拒":不管panic值是什么类型、是不是自己预…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:样你的程序就不会留下混乱。在本章中,我们将向你展示如何延迟清 理操作,以便在出现错误时也能执行这些操作。我们还将向你展示如何 在适当的(罕见的)情况下使程序出现panic,以及如何在事后恢复。 从文件中读取数字,重新访问 我们已经讨论了很多在Go中处理错误的内容。但是到目前为止, 我们所展示的技术并不适用于所有情况。让我们看一个这样的场景…