Вступить в клуб →
средняявопросКорутины и Flow

try/catch снаружи launch не ловит ошибку запроса

Обработка ошибок сети написана так:

try {
    viewModelScope.launch {
        val orders = api.getOrders() // бросает IOException при отсутствии сети
        _state.value = Content(orders)
    }
} catch (e: IOException) {
    _state.value = Error
}

Что произойдёт при отсутствии сети?

  • Исключение поймается, если заменить IOException на Exception: сейчас просто не совпадает тип перехватываемого исключения
  • Компилятор не разрешит обернуть запуск корутины в try/catch без указания обработчика исключений для области
  • Исключение будет поймано, экран покажет состояние ошибки: блок try охватывает запуск корутины целиком
  • Блок catch не сработает: launch возвращает управление сразу, а исключение возникает позже уже внутри корутины

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела