Что будет если использовать try/catch снаружи launch в Coroutines

«Что будет если использовать try/catch снаружи launch в Coroutines» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Использование try/catch снаружи launch в корутинах не поймает исключения, выброшенные внутри корутины, так как launch запускает асинхронную операцию. Исключения внутри корутины нужно обрабатывать внутри launch или использовать CoroutineExceptionHandler.

Пример:

try {
    CoroutineScope(Dispatchers.IO).launch {
        throw RuntimeException("Ошибка внутри корутины")
    }
} catch (e: Exception) {
    // Сюда не попадём, исключение не перехватится
}

Для перехвата исключений используйте try/catch внутри launch или async либо настройте CoroutineExceptionHandler.