Вступить в клуб →
лёгкаявопросСлой данных, DI и релиз

Ошибка 500 не попала в обработку ошибок

Экран заказов обрабатывает только сетевой сбой:

call.enqueue(object : Callback<List<OrderDto>> {
    override fun onResponse(call: Call<List<OrderDto>>, response: Response<List<OrderDto>>) {
        render(response.body().orEmpty())
    }

    override fun onFailure(call: Call<List<OrderDto>>, t: Throwable) {
        showError()
    }
})

Сервер начал отвечать кодом 500. Пользователи видят пустой экран без сообщения об ошибке. Почему?

  • Ответ с кодом 500 приходит как успешно выполненный вызов: обработчик сбоя ловит только сетевые проблемы
  • При коде 500 тело ответа недоступно, поэтому отличить серверную ошибку от пустого списка на клиенте невозможно
  • Нужно увеличить таймаут: код 500 обычно приходит, когда сервер не успевает ответить за отведённое время
  • Колбэк ошибки теряется, потому что запрос выполняется в фоновом потоке, а обработчик привязан к главному

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

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

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

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