知识卡片

错误异常分层

专业/工作 · 489.b.2.b.1.a.1.a.1

内容

错误是可预期失败,异常是流程已无法按常规继续的状态。Go 同时保留 error 与 panic/recover,是为了让普通失败显式返回,把真正异常收束在少数边界。这个边界具体如何收口,见 [[Recover要在边界]]。

参考来源

- 位置:《Go语言高级开发与实战》第2章《Go语言高级编程技巧》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_019.html) - 结论依据:原文区分错误与异常,并举“重试失败升级为异常、panic 恢复后转 error”的例子,因此支撑分层处理结论。 - 原始内容:常处理技巧 2.5.1 错误和异常简介 错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看作是错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误。从表面上看,一切皆错误的思路更简单,而异常的引入仅仅增加了额外的复杂度。 但事实并非如此。众所周知,Go语言遵循“少即是多”的设计哲学,程序设计追求简洁优雅,也就是说,如果异常价值不大,就不会将异常加入到