无法处理 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
函数等待任务完成。
我想弄明白为什么这个 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
函数等待任务完成。