13.4 自定义包中的错误处理和 panicking

    1)在包内部,总是应该从 panic 中 recover:不允许显式的超出包范围的 panic()

    2)向包的调用者返回错误值(而不是 panic)。

    下面的代码则很好地阐述了这一点。我们有一个简单的 parse 包(示例 13.4)用来把输入的字符串解析为整数切片;这个包有自己特殊的 。

    当没有东西需要转换或者转换成整数失败时,这个包会 panic(在函数 fields2numbers 中)。但是可导出的 Parse 函数会从 panic 中 recover 并用所有这些信息返回一个错误给调用者。为了演示这个过程,在 中 调用了 parse 包(示例 13.5);不可解析的字符串会导致错误并被打印出来。

    示例 13.5 panic_package.go

    输出: