【发布时间】:2021-05-30 17:43:36
【问题描述】:
我最近看了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“清晰胜于聪明”。你怎么看?
【问题讨论】:
-
提供的通用函数不是惯用的,但是即使在标准库中也有一些包提供
Mustfunc 来简化初始化,例如参见html/template。 -
我认为您必须考虑 如何 使用 must() 函数。它用于与幻灯片/实时编码交谈的上下文中,因此尽可能简洁很重要。另一方面,在生产中,随机恐慌不是一个好主意:-)
-
是的,我想在实时编码时使用
must()更容易:) -
如果恐慌是“处理”这些类型的“错误”的正确方法,那么是的,如果不是,那么不是。