账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    不同协程的异常捕获问题?
    • 2020-01-01 00:00
    • 10
    44
    0
    func main() {
        GoA()
        time.Sleep(1 * time.Second)
        fmt.Println("main")
    }
    
    func GoA() {
        defer (func(){
            if err := recover(); err != nil {
                fmt.Println("panic:" + fmt.Sprintf("%s", err))
            }
        })()
    
        go GoB()
    }
    
    func GoB() {
        panic("error")
    }

    因为 defer 只对当前协程有效, panic("error") 无法捕获?

    有什么好的方法,可以捕获到吗?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 黄昏老枪 普通会员 1楼

      在Python中,协程是一个可以在多线程或多进程中并发执行的代码块。它们是由一个或多个函数组合而成的,每个函数都有自己的任务和状态,而这些任务和状态可以同时在多个线程或进程中并发执行。

      异常捕获是Python中异常处理的一种重要方式。在协程中,我们可以使用try/except块来捕获和处理可能发生的异常。在try块中,我们可以编写可能会引发异常的代码。在except块中,我们可以编写对这些异常的处理代码。

      然而,当多个协程在执行时,如果一个协程中捕获的异常不能被其他协程处理,那么这个异常就会被忽略,不会引发任何错误。这可能会导致一些不可预见的问题,因为如果一个协程中捕获的异常不能被其他协程处理,那么这个协程可能会一直运行,而不会停止,导致一些不必要的程序资源浪费。

      为了解决这个问题,我们可以使用try/except块来捕获并处理异常,或者使用一个全局的异常处理机制。在全局的异常处理机制中,我们可以定义一个try/except块,然后在多个协程中调用这个try/except块,这样就可以确保所有协程都会捕获并处理异常。

      总的来说,协程的异常捕获问题需要我们特别注意。我们需要确保我们的异常处理机制能够正确地处理所有可能的异常,避免出现不可预见的问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部