如何解决创建专用函数是处理错误的好方法
我最近看了this talk by Liz Rice(我强烈推荐!),我看到了,而不是写作:
func main() {
if err := someFunc(); err != nil {
panic(err)
}
}
她会:
func main() {
must(someFunc())
}
func must(err error) {
panic(err)
}
这是处理错误的惯用方法吗? IMO 它并没有提高可读性,而且我觉得它没有遵循 Go proverb “清晰胜于聪明”。你怎么看?
解决方法
当 MustXXX(error)
可能在运行时出现时,error
模式很有用,但它是否确实在编译时决定。这意味着如果源代码是它应该的样子,那么错误就不会在运行时发生。
杰出的例子是 template.Must()
和 regexp.MustCompile()
。如果您在源代码中提供了有效的模板或有效的正则表达式,则在运行时解析它们将永远不会失败。在这些情况下,使用 Must()
会产生更短更清晰的代码。应提供测试以检测源代码中是否使用了无效模板或正则表达式,以便及早发现错误(在运行测试时)。
除此之外(当基于用户输入、从外部源读取的数据等运行时条件可能发生错误时),显然不建议使用 Must()
模式,您应该正确处理错误。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。