- 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块,这样就可以确保所有协程都会捕获并处理异常。
总的来说,协程的异常捕获问题需要我们特别注意。我们需要确保我们的异常处理机制能够正确地处理所有可能的异常,避免出现不可预见的问题。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
