登录
首页 >  Golang >  Go问答

处理延迟函数中的错误的正确方式

来源:stackoverflow

时间:2024-02-21 23:39:21 143浏览 收藏

从现在开始,努力学习吧!本文《处理延迟函数中的错误的正确方式》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

func someFunc() (err error) {
    defer func(err_ error) {
        r.handleErrOrPanic(err_, obj) 
    }(err) // err is always nil here
    err = ThrowErrOrPanic(ctx, obj)
    return err
}

我想使用 handleerrorpanic 作为延迟函数来处理错误或紧急情况。我必须在 throwerrorpanic 之前定义它,因为延迟函数必须处理紧急情况。但是,如果我在 err 之前定义它,则它始终为零。我该如何解决这个问题?


正确答案


在延迟函数中使用周围函数的命名返回值,即使用 err 而不是 err_。如果您感到恐慌并且想从中恢复,请在延迟函数中使用 recover()

func someFunc() (err error) {
    defer func() {
        if x := recover(); x != nil { // panic occurred?
            // handle panic
        } else if err != nil { // a plain error occurred?
            // handle error
        } else {
            // all good
        }
    }()

    err = ThrowErrOrPanic(ctx, obj)
    return err
}

https://go.dev/play/p/miTr-lN1Y9R

终于介绍完啦!小伙伴们,这篇关于《处理延迟函数中的错误的正确方式》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>