Kotlin协同吞咽exception

我很困惑如何exception处理协同作品。

我希望有可能有一个挂起的function,可以通过例如自己之间的例外同步代码。 所以如果说Retrofit抛出一个IOExceptionexception,我可以在挂起函数链的开始处理这个exception,例如在演示者中向用户显示错误。

我做了这个简单的例子来尝试协同程序,但如果我取消注释throw Exception调用exception后运行的代码失败,但exception不会崩溃的应用程序。

 package com.example.myapplication import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.widget.Button import android.widget.TextView import kotlinx.coroutines.experimental.delay import kotlinx.coroutines.experimental.launch class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val text = findViewById(R.id.thing_text) val button = findViewById

我曾尝试使用asyncCoroutineExceptionHandler

在使用async ,应该await某个地方的结果,以免丢失任何exception。

这里是基于Alexey Romanov的答案捕获exception的代码。 有了更多的工作,我已经开始工作了。 添加Log.d("thread", Thread.currentThread().name)表明延迟不会阻塞UI。

 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val text = findViewById(R.id.thing_text) val button = findViewById