首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin -异常后继续Coroutine

Kotlin -异常后继续Coroutine
EN

Stack Overflow用户
提问于 2017-01-11 01:59:46
回答 2查看 2.1K关注 0票数 4

我的问题

有可能在异常之后继续执行coroutine吗?

示例

代码语言:javascript
复制
try {
    someMethod1()
    someMethod2() //Throws an exception!
    someMethod3()
} catch(e: Exception) {
    //I do not want to call someMethod3 here!
    //I want the coroutine to resume after the exception inside of the original block.
} finally {
    //I also do not want to call someMethod3 here!
    //I want the coroutine to resume after the exception inside of the original block.
}

我不知道这是否可能,但谢谢你提前看一看!

EN

回答 2

Stack Overflow用户

发布于 2017-05-04 13:48:07

简单地说,这是不可能的。较长的答案是:

Kotlin协同器允许您仅在设计的挂起点(使用挂起函数)挂起代码执行。Coroutines不是一般的goto类控制结构。恰恰相反,这是一个非常严格约束和严格控制流的概念,它确保您不会打破连续执行代码的错觉,尽管您可以暂停执行代码并在稍后继续执行。

Kotlin协同器实现了一次中断,一旦代码块被挂起,它只能恢复一次,以便继续遵循它的常规顺序执行逻辑,例如,如果代码抛出一个异常,您仍然可以挂起id,但您只能继续执行它正在执行的操作(处理此异常)。

票数 2
EN

Stack Overflow用户

发布于 2017-01-11 12:19:19

对于someMethod1someMethod2someMethod3必须是suspend fun。然后,您所需要的就是捕获控制器中的异常并恢复协同线。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41581548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档