微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建专用函数是处理错误的好方法

如何解决创建专用函数是处理错误的好方法

我最近看了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() 模式,您应该正确处理错误。>

查看相关:Multiple values in single-value context

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。