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

Сервер ответил 500, а ветка обработки ошибки не сработала

URLSession.shared.dataTask(with: request) { data, response, error in
    if let error {
        self.showError(error)
        return
    }
    self.render(data)
}.resume()

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

  • data будет nil, поэтому render получает пустоту — нужно просто проверить data на nil
  • URLSession вернёт error с кодом 500, но showError не сработает из-за раннего return
  • Параметр error сообщает только о транспортных сбоях; HTTP-статус проверяют у HTTPURLResponse
  • Задача завершается ошибкой только при включённом waitsForConnectivity, поэтому нужно включить его в конфигурации сессии

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

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

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

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