无法处理 firebase 函数中的异常

Cannot handle exception in firebase function

我想弄明白为什么这个 throwable 没有被我的 catch 块捕获:

CoroutineScope(IO).launch {
        try {   FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
                if (task.isSuccessful) {
                    token = task.result
                }
                throw Exception("Hi There!")
            }).await()
            getUsers().await()
        }catch (e: Exception){
           binding.txtTitle.text = "Error: ${e.message}"
        }
    }

调用了异常,但应用程序崩溃且未由 catch 块处理。但是,如果我在 addOnCompleteListener 之外抛出异常,则异常会得到正常处理。我的 objective 是在没有令牌可用时停止 getUsers 函数的执行。

OnCompleteListener 中抛出的异常不会传播到外部范围,它的范围是 OnCompleteListener 块。为了实现您的 objective,我建议将代码重写为如下内容:

coroutineScope.launch {
    try {
        val token: String = FirebaseMessaging.getInstance().token.await()
        if (token.isNotEmpty) {
            getUsers().await()
        }
    } catch (e: Exception){
        // ...
    }
}

await 函数等待任务完成。