W structured concurrency błąd w dziecku zwykle anuluje rodzica (chyba że użyjesz `SupervisorJob`). W `launch` nieobsłużony wyjątek idzie do rodzica/handlera; w `async` wyjątek jest “schowany” do momentu `await()`. Do lokalnej obsługi używaj `try/catch`, a `CoroutineExceptionHandler` głównie na top-level `launch` (logowanie/obsługa awarii).