知识卡片

panic只留给不该发生的程序bug

专业/工作 · 470.b.1.a.1.c.3.a.6.a.2.d.1.a.1.c.1

内容

Go 明确区分两类”坏情况”:文件访问不了、网络请求失败、用户输入格式不对——这些都属于程序运 行环境里”正常会发生”的意外,应该用[[error作为返回值而非异常]]的方式显式处理;而 panic 应该 只留给那些理论上根本不该发生、一旦发生就说明代码本身有 bug 的情形,比如一个只应发散:这条界线的价值在于让 panic 保持稀有——如果什么 错误都用 panic 处理,程序里就会散布着大量”这里可。

参考来源

- 位置:《Head First Go语言程序设计》第12章《重新站起来:从失败中恢复》(源文件:_epub-src/index_split_003.html) - 结论依据:原文在该章节围绕“Go明确区分两类"坏情况":文件访问不了、网络请求失败、用户输入格式不对——这些都属于程序运行环境里"正常会发…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:3的随机数。我们为每个值提供了case表达式,每个值都打印一条不 同的信息。为了提醒我们注意理论上不可能出现的情况,即没有匹配的 case,我们还提供了一个产生panic的default语句。 有问必答 问:我见过其他一些语言,在每个case的末尾必须提供一 个“break”语句,否则它也会运行下一个case的代码。Go不需要这个吗? 答…