при использовании fetch, axios и т. д. `catch` не обрабатывает ошибку, вместо этого ваше приложение вылетает - PullRequest
2 голосов
/ 02 апреля 2019

Чтобы убедиться, что наш запрос будет успешным, сначала мы проверяем подключение к интернету, а затем отправляем наш запрос. как это:

NetInfo.isConnected.fetch().then(async isConnected=> {
  if(isConnected){
    try {
       let result = await fetch(MY_REMOTE_SERVER);
       console.log("result: ", result)
    } catch (error) {
       console.error("error: ", error);
    }
  }
  else ToastAndroid.show('No internet', ToastAndroid.SHORT);
});

Все было хорошо, пока я не столкнулся с этой проблемой: рассмотрим ситуацию, в которой доступ к серверу для некоторых стран заблокирован.

Итак, хотя с интернетом все в порядке, каждый раз я получал network request failed ошибку. Я не смог найти проблему, потому что ожидал, что catch напечатает ошибку, но мое приложение просто зависало.

Теперь, когда я знаю причину, я не знаю, как ее решить. Например, когда невозможно установить соединение, я хочу предупредить пользователя об использовании VPN или покинуть приложение, потому что они находятся в стране, на которую распространяется эмбарго!

С другой стороны, какой смысл ловить !? если это не ловит ошибку! спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...