I
там же не в 200 миллискунд дело, а в том, что суспенд функция не вернет значения в return пока не завершится блок внутри
scope3
Size: a a a
I
scope3
AL
println(res)
внутрь asyncAL
I
println(res)
внутрь asyncI
I
I
val handler = CoroutineExceptionHandler { _, exception ->
println("CoroutineExceptionHandler got $exception")
}
val scope = CoroutineScope(SupervisorJob())
val scope2 = CoroutineScope(Job())
suspend fun criticalSectionSuspending(): String {
println("Starting!")
val handler1 = coroutineContext[CoroutineExceptionHandler] ?: throw Exception("Empty Handler")
val scope3 = CoroutineScope( handler1)
val someJob = scope3.launch {
delay(200)
println("Delay!")
throw Exception("Delay exception")
}
return "Result"
}
fun main() {
scope.launch(handler) {
val res = scope2.async{
val r = criticalSectionSuspending()
println(r)
return@async r
}.await()
println(res)
}
Thread.sleep(500)
}
I
Exception("Empty Handler")
отлавливается в handler…I
I
I
coroutineContext
в примере, это scope2, у него хендлера нет. Exception("Empty Handler")
отправляется на верх, в scope где и ловится… CoroutineExceptionHandler
не получить вообще из контекста корутины?RI
collection.contains {}
, что норм для каких-нибудь билдеров, но вообще не то что ожидаешь в данном случае, т.к. явно хочется передать какой-то инстанс, чтобы он по ссылке внутри сравнивался (у нас же функциональный тип тут). Так вот, как IDE может отличить эти два случая? Я придумал только аннотации расставлять: @IgnoreTrailingFunctionalType
, но может у вас идеи получше есть https://youtrack.jetbrains.com/issue/KT-43991RI
coroutineContext
в примере, это scope2, у него хендлера нет. Exception("Empty Handler")
отправляется на верх, в scope где и ловится… CoroutineExceptionHandler
не получить вообще из контекста корутины?CoroutineExceptionHandler
) никак не могут попасть из одного скоупа в другойAE
- Разработка чего на котлине наиболее востребована( полагаю что приложения на андроид )
- Делают ли на нем бэкэнд и насколько это часто встречается
- Какие фремворки/либы маст хэв
- Есть ли смысл знать только котлин( принцип работы jvm не в счет ) или стоит еще подучить еще и яву
AY
PE
AY
PE
AY
I
inline
extension-функцию из кода модуля в отдельную библиотеку и код модуля перестаёт компилироваться 😞[ERROR] Caused by: java.lang.IllegalStateException: Couldn't obtain compiled function body for …
suspend inline fun <M, RES> EntityRef<M>.ask(timeout: Duration, noinline message: (ActorRef<RES>) -> M): RES = this.ask(message, timeout).await()