提出例外

时间:2010-05-12 12:49:36

标签: exception go

我想提出一个异常,因为它是用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)
}

1 个答案:

答案 0 :(得分:8)

按照惯例,Go不会做这样的事情。它有panic and recover,它有点像异常,但它们仅用于非常特殊的情况。找不到文件或类似文件根本不是特殊情况,而是一个非常规的情况。特殊情况是解除引用nil指针或除以零之类的事情。