我想提出一个异常,因为它是用Python或Java制作的 - 用错误信息完成程序 - 。
可以将错误消息返回给父函数:
func readFile(filename string) (content string, err os.Error) {
content, err := ioutil.ReadFile(filename)
if err != nil {
return "", os.ErrorString("read " + filename + ": " + err)
}
return string(content), nil
}
但是我想要在找到错误时完成它。下一个会是正确的吗?
func readFile(filename string) (content string) {
content, err := ioutil.ReadFile(filename)
defer func() {
if err != nil {
panic(err)
}
}()
return string(content)
}
答案 0 :(得分:8)
按照惯例,Go不会做这样的事情。它有panic
and recover
,它有点像异常,但它们仅用于非常特殊的情况。找不到文件或类似文件根本不是特殊情况,而是一个非常规的情况。特殊情况是解除引用nil
指针或除以零之类的事情。