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(...)
}
是否可以 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(...)
}