adev_one
05/30/2019, 7:03 AMgildor
05/30/2019, 7:13 AMaltavir
05/30/2019, 7:33 AMgildor
05/30/2019, 7:39 AMgildor
05/31/2019, 10:29 AMadev_one
06/03/2019, 4:39 AMval scope = CoroutineScope(<http://Dispatchers.IO|Dispatchers.IO>)
scope.async {
// Я хочу обработать exception здесь
// и не пробрасывать его на уровень выше,
// но он пробрасывается
val result = try {
otherCallAsync(this).await()
} catch (e: Exception) {
fallback
}
result
}
fun otherCallAsync(scope: CoroutineScope) = scope.async {
throw RuntimeException("no internet")
}
gildor
06/03/2019, 4:42 AMadev_one
06/08/2019, 9:30 AMgildor
06/08/2019, 9:30 AMval scope = CoroutineScope(<http://Dispatchers.IO|Dispatchers.IO>)
scope.async {
val result = try {
otherCallAsync(this)
} catch (e: Exception) {
fallback
}
result
}
fun otherCallAsync() {
throw RuntimeException("no internet")
}
adev_one
06/08/2019, 11:19 AMgildor
06/09/2019, 5:37 AMval scope = CoroutineScope(SupervisorJob () + <http://Dispatchers.IO|Dispatchers.IO>)
Мои комменты выше были по отношению к стилю того как вы ваш код групируете, что если есть возможность, лучше использовать только suspend функции и паралелить их врапая в async, но только на месте вызова, где можно будет легко обработать ошибку, это просто то как рекомендуется в официальном гайде это делать, опять же там где возможно и это зависит от юз кейса и если у вас есть пример кода, то как вы используете корутины, то можно было бы более предметно поговорить