知识卡片
panic与error的责任分工
内容
Go把”可预期的失败”和”不可预期的异常”分成两条完全不同的处理通道:常规错误(文件不存在、输入格式不对)应该通过函数最后一个error类型返回值传递,由调用方主动检查并决定怎么处理;panic/recover机制则类似其他语言的异常,用于真正意料之外的运行时错误。发散:这个分工的好处是调用方在读函数签名时就能一眼看出”这个函数可能失败”(因为返回值里有error),而不用去查文档或读源。
参考来源
- 位置:《Go语言程序设计》第1章《5个例子》(源文件:_epub-src/OEBPS/text00035.html)
- 结论依据:原文在该章节围绕“Go把"可预期的失败"和"不可预期的异常"分成两条完全不同的处理通道:常规错误(文件不存在、输入格式不对)应该…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:r 循环的完整语法将在第5章叙述。 Go语言的函数和方法均可返回单一值或者多个值。Go语言中报告错误的惯例是函数或者方法的最后一个返回值是一个错误值(其类型为 error )。我们的自定义类型 stack.Stack 也遵从这样的惯例。 既然我们知道自定义类型 stack.Stack 是怎么使用的,就让我们再来看看它的具体实现(源码在文件…