es6 承诺吞下类型错误

2024-03-20

我希望浏览器在发生类型错误时显示错误消息。
错误如无法读取未定义的属性 or 未定义参考.

new Promise(function(resolve,reject){
    // do stuff ...
    reject('something logical is wrong');
}).catch(e => console.error(e));

new Promise(function(resolve,reject){
    // do stuff, and a syntax error :/
    var a = { };
    a.something.otherthing = 1; /* we have an error here */
    // ... 
}).catch(e => console.error(e));

在第一个示例中,错误是逻辑错误,可以catch它在抓住(..) block.
但在第二个例子中,这是一个明显的开发错误,这种错误在开发新东西时经常发生。我不想捕获它,我希望浏览器向我显示该错误,就像控制台中的其他错误一样。 我希望能够打开chrome 遇到异常时暂停并查看其他变量的状态。我想在控制台中查看堆栈跟踪。
我希望它表现得像normal error.

任何想法?


与同步代码中的异常不同,同步代码变成uncaught一旦代码返回到idle,浏览器通常不知道承诺链的逻辑末端,这是一个异步错误可以认为是未捕获。毕竟链是动态组装的,因此最好用最终的终止.catch在链的逻辑末端,即空闲的异步等效项。

有决赛.catch(e => console.error(e))对我来说似乎很合理,但你是对的,浏览器倾向于以与未捕获的异常不同的方式显示这些错误。如果你想让它们看起来一样,你可以使用这个技巧:

.catch(e => setTimeout(() => { throw e; }))

这会抛出e,包含原始堆栈跟踪和行号,在下一个循环中,在承诺链之外,没有任何东西可以捕获它,并且它将被报告为未捕获。我们用setTimeout克服默认行为.catch这是为了捕获链中的任何异常,以防您打算继续链接。

通过这一点,我希望您看到“逻辑”错误和其他错误之间的任何区别都是无关紧要的。任何导致链尾部的错误对于链来说都是致命的,即uncaught(当然,您可以将“逻辑”与最终捕获中的其他错误进行分类,并根据您的选择以不同的方式显示它们。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

es6 承诺吞下类型错误 的相关文章

随机推荐

  • 错误:无法启动新线程

    我有一个使用以下配置运行的网站 Django mod wsgi 阿帕奇 在一个用户的请求中 我向另一个服务发送另一个HTTP请求 并通过python的httplib库解决了这个问题 但有时此服务得不到答复的时间太长 并且 httplib 的
  • 通过 URL 自动登录用户

    我每周向网站的注册会员发送一封邮件 其中包含该网站上私人页面的 URL 出于可用性目的 我不希望用户在单击 URL 后必须提供凭据 我正在使用 ASP NET 会员提供程序模型 Question 我如何实现这一点 以便用户可以通过单击专门的
  • 使用传递的参数附加方法后分离事件处理程序

    我需要将参数 在 C 中 传递给事件处理程序 然后能够分离事件处理程序 我附加事件处理程序并传递参数 map MouseLeftButtonUp sender e gt map MouseLeftButtonUp2 sender e sho
  • Python 导入机制

    我有两个相关的 Python 导入 问题 它们很容易测试 但我想要语言定义的答案而不是特定于实现的答案 而且我也对样式 约定感兴趣 所以我在这里问 1 如果模块 A 导入模块 B 模块 B 导入模块 C 模块 A 中的代码是否可以在不显式导
  • 如何获取 Binder 事务缓冲区的内容以进行故障排除

    有没有办法以编程方式或通过调试工具来了解 Binder 事务缓冲区中保存的当前事务 有时 通常在运行数小时 数天后 我的应用程序会崩溃并出现如下错误跟踪 08 30 09 49 57 459 1879 1904 E JavaBinder F
  • 具有行为奇怪的多值参数的存储过程

    我在 SQL Server 中创建了一个存储过程来为 SSRS 提供数据 以使其能够接受多个值 我已经创建了它 当我在报告中使用它或在 SQL Server 中执行它时 我收到以下错误消息 消息 207 第 16 层 状态 1 第 35 行
  • 如何避免电子邮件自动化的 Outlook 安全警告?

    我正在尝试使用 VBA 从 Excel 2010 发送 Outlook 电子邮件 Stack Overflow 上的大多数答案似乎都没有使用 VBA 来避免 Outlook 安全警告的方法 对于 Outlook Excel 2010 也没有
  • Swift - 从地图注释执行 Segue

    我的地图上有 1 个图钉 我需要将注释标题传递给另一个 UIView 在这种情况下是 ikinci Ekran swift 但我无法这样做 这是我的代码的segue部分 我不知道如何segue所选注释的标题 我只粘贴了相关部分的代码 cla
  • 从数据库中检索mp3文件

    我有一个关于如何从数据库中检索存储为 byte 数组的 mp3 文件并将其显示在表单中并让用户下载 播放的问题 唔 这确实可以做到 但如果它是 RDBMS 您确实应该重新考虑解决方案 通常 数据库不是为使用大型二进制对象而设计或优化的 并且
  • 首次打开时 Colorbox 无法以正确的高度打开

    所以我正在使用colorbox http colorpowered com colorbox 联系表单插件 我只是默认的 colorbox 属性 所以它应该自动调整到它包含的 div 对吗 首次加载时 此颜色框内容上有一个小的垂直滚动条 我
  • Android 虚拟键盘监听器

    虽然我之前问过这个问题 但没有得到任何正确的答案 当编辑文本聚焦时 我有一个 EditText android 虚拟键盘弹出 我已使用属性窗口中的 ime 选项将 完成 按钮添加到键盘 现在我想通过按 完成 按钮来执行一些操作 这个怎么做
  • 使用 Html 链接将 PHP GET 数据发送到服务器

    我有一段时间没有写 PHP GET 请求了 所以我有点生锈了 但是如何使用 Html 链接发送 GET 数据 如果我使用 jQuery 的 get 方法 我知道该怎么做 但我只是想知道是否有更简单的方法使用 Html 中的 href 或类似
  • Java中如何使图像从左向右移动

    到目前为止 我已经创建了下面的类 但是 现在我想插入一个代码以使图像从左到右和从右到左滑动 我通常会使用滑动平台 但是当我尝试实现它时它不起作用 我还是一个java初学者 所以我很感谢你的帮助 这是我的 Java 类的代码 package
  • 升级Java后找不到Sun.security

    我有一个使用 Play 2 0 创建的应用程序 我实现了 scribe java 库来使用一些 OAuth 服务 直到今天一切都很好 但是当我升级 jdk 并重新启动服务器时 我无法使用 scribe java 库 似乎它使用了一些类 例如
  • 在 ES6 中创建多个构造函数

    在 ES5 中 可以为一个类创建多个构造函数 同时使用原型保留两个类的公共部分 如下所示 function Book just creates an empty book function Book title length author
  • 无法从本地环境将 Blob 存储上传/下载到容器

    我有一个现有的函数应用程序 它具有从 sftp 下载文件 处理文件并将文件上传到 blob 存储的功能 该功能应用程序已部署在azure中并且运行正常 但是 当我从 Visual Studio 本地 运行相同的操作时 我在将文件上传到 Bl
  • 如何在 Apache Tomcat 启动中创建单例

    我需要在 Apache Tomcat 启动时创建一个单例 以便我可以使用 servlet 访问它们 单例定义 servlet 将给出什么响应 我想知道 tomcat 是否有构造函数 以便我可以添加代码以便创建单例 编辑 经过一番搜索 我发现
  • 如何将分隔字符串 split() 到 List

    我有这个代码 String lineElements try using StreamReader sr new StreamReader TestFile txt String line while line sr ReadLine nu
  • 使用出生日期计算年龄

    我正在开发一个 Android 应用程序 用于从用户提供的出生日期查找年龄 三个编辑文本 一个代表天 另外两个代表月份和年份 我从中得到了代码link http www androidsnippets com calculate age 但
  • es6 承诺吞下类型错误

    我希望浏览器在发生类型错误时显示错误消息 错误如无法读取未定义的属性 or 未定义参考 new Promise function resolve reject do stuff reject something logical is wro