13.4 自定义包中的错误处理和 panicking
1)在包内部,总是应该从 panic 中 recover:不允许显式的超出包范围的
2)向包的调用者返回错误值(而不是 panic)。
下面的代码则很好地阐述了这一点。我们有一个简单的 parse
包(示例 13.4)用来把输入的字符串解析为整数切片;这个包有自己特殊的 。
当没有东西需要转换或者转换成整数失败时,这个包会 panic()
(在函数 fields2numbers()
中)。但是可导出的 函数会从 panic()
中 recover()
并用所有这些信息返回一个错误给调用者。为了演示这个过程,在 panic_recover.go 中 调用了 包(示例 13.5);不可解析的字符串会导致错误并被打印出来。
示例 13.5 :
输出: