Return 从 CorutineExectionHandler 到调用方法的值

Return value from a CorutineExectionHandler to the calling method

是否可以 return 从 CoroutineExceptionHandler 到调用方法的值?

 override suspend fun getStatus() : Model {        
return withContext<Model>(Dispatchers.IO + errorHandler) {
                //Do something and return model
                // If any other exception is thrown while multiple coroutines its passed down to errorhanlder
        }
    }


 private val errorHandler = CoroutineExceptionHandler { _, exception ->
        
    }

不,不是。

这种处理程序用于一般的未捕获异常处理,可以在许多不同的协程中重复使用,这些协程可能需要不同的 return 值,甚至可能根本没有 return 值。

如果你想捕获一些异常和 return 一个不同的值,你需要在现场(例如在你的 withContext 周围)使用 try/catch块:

override suspend fun getStatus() : Model = try {
    withContext<Model>(Dispatchers.IO) {
        // Do something and return model
    }
} catch(e: Exception) { // use more specific exception if you can
    SomeErrorModel(...)
}