obobo
03/09/2026, 7:48 PMThis invocation resumes normally (without exception) when the job is complete for any reason and the Job of the invoking coroutine is still active.
Michael Krussel
03/09/2026, 8:15 PMOliver.O
03/09/2026, 10:35 PMJob.join() will see the exception.Dmitry Khalanskiy [JB]
03/10/2026, 10:03 AMJob.join() does not rethrow the exception with which the Job finished. That said, because it's a suspend function, it will throw a CancellationException if the caller is cancelled.
Oliver's example throws an exception because job1 is the child of coroutineScope, its failure cancels the coroutineScope, and therefore, the computation in the coroutineScope gets cancelled as well.
If a Job fails independently from the join caller (e.g., they have unrelated coroutine scopes), then no exception will be thrown! https://pl.kotl.in/Bis4BithQ is an example.