引发异常

发布于 2024-09-01 10:36:36 字数 608 浏览 7 评论 0原文

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

I would want to raise an exception as it's made in Python or Java --to finish the program with an error message--.

An error message could be returned to a parent function:

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
}

but I want that it can be finished when the error is found. Would be correct the next one?

func readFile(filename string) (content string) {
    content, err := ioutil.ReadFile(filename)

    defer func() {
        if err != nil {
            panic(err)
        }
    }()

    return string(content)
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌无敌 2024-09-08 10:36:36

按照惯例,Go 不会做这样的事情。它具有恐慌恢复 ,这有点类似于异常,但它们仅在非常特殊的情况下使用。找不到文件或类似情况根本不是特殊情况,而是一种非常常见的情况。特殊情况包括取消引用 nil 指针或除以零。

By convention, Go doesn't do things like this. It has panic and recover, which are sort of exception-like, but they're only used in really exceptional circumstances. Not finding a file or similar is not an exceptional circumstance at all, but a very regular one. Exceptional circumstances are things like dereferencing a nil pointer or dividing by zero.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文