当使用 fetch、axios 等时,`catch` 不会处理错误,而是您的应用程序崩溃

2024-01-06

为了确保我们的请求成功,首先,我们检查互联网连接,然后发送我们的请求。 像这样:

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 或离开应用程序,因为他们位于禁运国家/地区!

另一方面,catch有什么意义!?如果它没有捕获错误! 谢谢。


其实这是我们这边的错误,react-native遇到这种情况就会崩溃console.error。 因此,通过将上面的代码更改为这个版本,您将摆脱红屏:

NetInfo.isConnected.fetch().then(async isConnected=> {
   if(isConnected){
      try {
        let result = await fetch(MY_REMOTE_SERVER);
        console.log("result: ", result)
      } catch (error) {
        // use "log" instead of "error"
        console.log("error: ", error);
        // or you may want to show a toast on error like
        oastAndroid.show('No internet', ToastAndroid.SHORT)
      }
   }else ToastAndroid.show('No internet', ToastAndroid.SHORT);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当使用 fetch、axios 等时,`catch` 不会处理错误,而是您的应用程序崩溃 的相关文章

  • 如何在反应组件中使用聚合物组件?是否可以?

    我已经使用谷歌的聚合物来制作网络组件 但我也很有兴趣尝试一下 React 所以我想知道是否可以从反应组件的渲染函数内部使用聚合物组件 对的 这是可能的 我使用的方法有点复杂 但我很乐意分享 如果您已经使用过聚合物 则只需像使用任何其他聚合物
  • 为什么当我保存更改时,Expo 没有刷新?

    当我进行更改并保存它们时 模拟器中的应用程序不会刷新 我认为模拟器没有连接到 Metro 服务器 我尝试通过运行清除缓存expo r c 但这没有做任何事情 您是否尝试启用快速刷新 我遇到了同样的问题 但在启用 快速刷新 后 自动刷新再次开
  • 以下文档我无法创建 Vue.js 3 的实例

    The code https stackblitz com edit vue ttt file src main js https stackblitz com edit vue ttt file src main js 问题 我正在尝试在
  • 如何将 Ajax.BeginForm MVC 助手与 JSON 结果一起使用?

    我正在尝试使用 ASP NET MVC Ajax BeginForm 帮助程序 但不想在调用完成时使用现有的内容插入选项 相反 我想使用自定义 JavaScript 函数作为回调 这可行 但我想要的结果应该以 JSON 形式返回 不幸的是
  • ListView无法滚动

    正如你在所附的 GIF 中看到的 我无法滚动浏览ListView 一旦我释放鼠标 视图就会恢复到原始位置 我已经阅读了文档 似乎滚动应该只是工作 这是执行render render function return
  • Javascript 作为对象键的函数与块中标记函数之间的语法冲突

    假设您有一个支持两者的浏览器带标签的函数声明 https developer mozilla org en US docs Web JavaScript Reference Statements label Labeled function
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 为什么无论状态是对象还是字符串,React 重新渲染的方式都不同?

    下面的反应示例 userProfile状态是一个object 第一次渲染 状态是 第二次渲染 状态是res data gt 无限重新渲染 If userProfile更改为string e g useState with setUserPr
  • .points 不透明度/大小在三个.js 内

    我回来回答有关 points 的第二个问题 这次想知道如何将不透明度从 0 更改为 1 然后又回到距发射器的特定像素距离内 var particleCount 14 particles new THREE Geometry pMateria
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • 如何在 JSX 中使用 switch case:ReactJS

    我的反应应用程序中导入了四个组件 我如何有条件地渲染组件之一 基于道具 这就是我想做的
  • Firefox Addon 中的 JQuery 导致多个警告

    我在 Firefox 插件中使用 jquery 但我不断收到大量警告消息 如下所示 anonymous function does not always return a value System JS WARNING resource g
  • 从 Context Provider 重定向 React Router

    我是 React Router 的新手 并尝试使用新的 Conext API 从提供程序内部进行重定向 基本上我的提供者看起来像这样 AuthContext js class AuthProvider extends React Compo
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 如何在react-navigation v5中使用withNavigation?

    我有一个嵌套组件 我想使用withNavigation在react navigation v5的嵌套组件中 为什么你不创建自己的带导航 import React from react import useNavigation from re
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on
  • 如何跨多个文件跨越 javascript 命名空间?

    我永远忽略了javascript 几年前我开始使用 jQuery 这样我就可以过得去 但随着我开始更多地进行 TDD 我昨天决定真正深入研究 javascript 之后可能还有咖啡脚本 在我的 ASP NET Web 窗体应用程序中 我有很

随机推荐

  • 扫描仪提前终止

    我正在尝试用 Go 编写一个扫描器 它可以扫描连续行 并在返回之前清理该行 以便您可以返回逻辑行 因此 给出以下 SplitLine 函数 Play http play golang org p 1HqqyvvcTJ func ScanLo
  • Google Apps 脚本错误 - 提取旧数据 - 不提取工作表中的当前数据 - Google 表格缓存问题

    我遇到过这样一种情况 将数据从一个 Google 工作表移动到另一个 Google 工作表的 Google Apps 脚本并未提取工作表中的当前数据 我可以通过检查两张表中的版本历史记录来验证这一点 当脚本从 Google Trigger
  • 如何从外部文件运行函数作为表单的操作?

    描述 目前我有一个 html 文件 其形式如下
  • 只模糊背景中的重复图像?

    我有一个带有背景图像的 div 背景图片css设置如下 resPic1 background url css images residentialpic1 jpeg center background size contain What i
  • 剖析 Maven

    是否有工具可以分析 Maven 构建过程本身 以便我可以看到构建花费最多时间的地方 我们在工作中遇到了 Maven 3 0 3 和 3 0b1 的问题 与 3 0 3 9m00s 相比 我们的项目在 3 0b1 3m30s 下的构建速度要快
  • 找不到“firebase_messaging/FirebaseMessagingPlugin.h”文件

    我正在尝试在 ios 上运行我的 flutter 应用程序 但是我收到此错误 ios Runner GeneratePluginRegistrant m 6 9 找不到 firebase messaging FirebaseMessagin
  • 如何将文本样式从粗体更改为正常

    我可以将文本从正常更改为粗体 但无法从粗体更改为正常 我不知道我错过了什么 boldtext setOnClickListener new View OnClickListener Override public void onClick
  • 使用 word2vec 嵌入句子

    我想比较不同句子中提到的相同单词的差异 例如 旅行 我想做的是 将提及 旅行 一词的句子视为纯文本 在每个句子中 将 旅行 替换为travel sent x 在这些句子上训练 word2vec 模型 计算 Travel sent1 trav
  • cv2没有属性数据

    代码来自一本教授OpenCV的书 我运行了代码 但它总是显示错误 import cv2 casc path cv2 data haarcascades haarcascade frontalface default xml faceCasc
  • 如何修复 Metro Bundler 进程退出并显示代码 1

    如何修复 Metro Bundler 进程退出并显示代码 1 Metro Bundler 进程退出 代码为 1 Error Metro Bundler process exited with code 1 at ChildProcess
  • 我可以使用 HTML 制作在 Hololens 上运行的通用应用程序吗?

    我相信这些说法是正确的 1 所有通用应用程序都以全息图的形式工作 2 可以使用 HTML JS 构建通用应用程序 这是否意味着我可以使用网络技术构建全息通用应用程序 例如 D3 js 中的全息可视化仪表板 现在下结论还为时过早 但这里有一些
  • CollectionAssert 与泛型一起使用吗?

    看起来CollectionAssert不能与泛型一起使用 这真是太令人沮丧了 我想测试的代码确实使用了泛型 我是什么做的 编写样板在两者之间进行转换 手动检查集合等效性 这失败了 ICollection
  • MySQL GROUP BY date - 如何在没有行时返回结果

    我正在编写一个查询来返回特定时间段内每天撰写的博客文章的数量 当某一天没有博客记录时 我的问题就出现了 通过我的查询 当天的结果完全被跳过 这是我的查询 SELECT DATE posted COUNT id FROM blogs WHER
  • ASP.NET 中的缓存母版页

    如何在 ASP NET 中缓存母版页 与用户控件不同 您不能单独输出缓存母版页 只能作为页面的一部分 此外 OutputCaching 无论如何也不会提高包含大量图像的工具栏的性能 有帮助的事情包括图像精灵 客户端缓存 使用 CDN 使用静
  • PHP,用什么代替create_function()?

    我知道之间的差异Lambda and Closures 我不想用Closure因为它得到了它的环境 并且var dump 它将产生大量的输出 使用 lambda 与create function 看起来是个好主意 但它正在被弃用 那么用什么
  • STA(单线程单元)COM 对象 - 生成工作线程?

    在 STA COM 对象中生成工作线程 即 COM 对象创建一个线程来执行任务 是一件坏事吗 我想 答案是 这要看情况 以我为例 我正在使用的工作线程不会干扰 访问 COM 或 COM 服务 我之所以问这个问题 是因为根据 STA COM
  • 函数调用或构造函数调用中的 C++ 数组初始化

    这个问题与帖子相关here https stackoverflow com questions 2627223 c template class constructor with variable arguments 是否可以在函数调用或构
  • 更改标题栏中的文本和背景颜色(Android)?

    我构建了一个 Android 应用程序 我正在尝试更改标题栏背景和文本颜色 在AndroidManifest xml中
  • django-guardian 示例源代码

    谁能推荐一个使用 django guardian 的优秀开源应用程序 我在理解 API 方面没有遇到困难 但我希望看到一个示例来了解实现最佳实践 数据库设计等 如果您克隆Django 守护者 https github com lukaszb
  • 当使用 fetch、axios 等时,`catch` 不会处理错误,而是您的应用程序崩溃

    为了确保我们的请求成功 首先 我们检查互联网连接 然后发送我们的请求 像这样 NetInfo isConnected fetch then async isConnected gt if isConnected try let result