@@ -58,8 +58,9 @@ public inline fun CoroutineExceptionHandler(crossinline handler: (CoroutineConte
58
58
* All _children_ coroutines (coroutines created in the context of another [Job]) delegate handling of their
59
59
* exceptions to their parent coroutine, which also delegates to the parent, and so on until the root,
60
60
* so the `CoroutineExceptionHandler` installed in their context is never used.
61
+ * Coroutines running with [SupervisorJob] do not propagate exceptions to their parent and are treated like root coroutines.
61
62
* A coroutine that was created using [async][CoroutineScope.async] always catches all its exceptions and represents them
62
- * in the resulting [Deferred] object, so it cannot result in uncaught exceptions either .
63
+ * in the resulting [Deferred] object, so it cannot result in uncaught exceptions.
63
64
*
64
65
* ### Handling coroutine exceptions
65
66
*
@@ -92,10 +93,7 @@ public inline fun CoroutineExceptionHandler(crossinline handler: (CoroutineConte
92
93
* * Otherwise, all instances of [CoroutineExceptionHandler] found via [ServiceLoader]
93
94
* * and current thread's [Thread.uncaughtExceptionHandler] are invoked.
94
95
*
95
- * [CoroutineExceptionHandler] can be invoked from an arbitrary dispatcher used by coroutines in the current job hierarchy.
96
- * For example, if one has a `MainScope` and launches children of the scope in main and default dispatchers, then exception handler can
97
- * be invoked either in main or in default dispatcher thread regardless of
98
- * which particular dispatcher coroutine that has thrown an exception used.
96
+ * [CoroutineExceptionHandler] can be invoked from an arbitrary thread.
99
97
*/
100
98
public interface CoroutineExceptionHandler : CoroutineContext .Element {
101
99
/* *
0 commit comments