vngantk
09/11/2019, 8:06 AMfun main() = runBlocking {
val job = Job()
launch {
delay(1000)
job.completeExceptionally(IllegalStateException("Failed"))
}
try {
job.join()
println("foo")
} catch (e: Exception) {
println("bar")
e.printStackTrace()
}
}
Dico
09/11/2019, 8:09 AMvngantk
09/11/2019, 8:11 AMDico
09/11/2019, 8:12 AMDico
09/11/2019, 8:12 AMDico
09/11/2019, 8:13 AMawait
from deferred will throw the exception thoughvngantk
09/11/2019, 8:16 AMvngantk
09/11/2019, 8:17 AMfun main() = runBlocking {
val job = launch {
delay(1000)
throw IllegalStateException("Failed")
}
try {
job.join()
println("foo")
} catch (e: Exception) {
println("bar")
e.printStackTrace()
}
}
vngantk
09/11/2019, 8:18 AMvngantk
09/11/2019, 8:25 AMvngantk
09/11/2019, 8:34 AMDico
09/12/2019, 8:07 AMDico
09/12/2019, 8:08 AMDico
09/12/2019, 8:08 AMjoin
doesn't throwDico
09/12/2019, 8:08 AMDico
09/12/2019, 8:09 AMawait
is a different function. Its behaviour is not tied.bdawg.io
09/12/2019, 4:28 PMbar
fun main() = runBlocking {
val deferred = async {
delay(1000)
throw IllegalStateException("Failed")
}
try {
deferred.await()
println("foo")
} catch (e: Exception) {
println("bar")
e.printStackTrace()
}
}