【问题标题】:Promise and handling of errors in Google Chrome谷歌浏览器中错误的承诺和处理
【发布时间】:2015-02-13 06:16:28
【问题描述】:

我正在测试用 HTML5 Promise 重写 som XMLHttpRequest-code。

我犯了一个错误,thePromise.then(failingCode) 中的代码失败了。这会调用设置Promise 时使用的reject 函数。

我不得不搜索一段时间才能发现错误,因为我没有得到任何调用堆栈,也没有发生错误的行号。

那当然很不方便。

我应该如何处理?我应该向 Google Chrome 开发人员发送错误报告吗?还是我自己的错?

【问题讨论】:

  • 看起来不错,@BenjaminGruenbaum!尽管它实际上无助于找到问题的确切位置。您可以在下面将它与我的答案结合起来。这提供了一些额外的信息。 (所以看起来我应该为 Chrome 提交另一个错误报告。)
  • 一种在 Google Chrome 中获取调用堆栈的方法 - 这种方法是异步堆栈跟踪,您可以在我上面发布的链接中看到它。如果您想始终拥有它,请不要使用本机承诺,请使用 Bluebird 缝合堆栈跟踪并具有更好的跟踪。
  • 在 Firefox 中运行良好。此问题应标记为 google-chrome。
  • 谢谢@jib,我不知道这个标签。

标签: javascript google-chrome error-handling promise es6-promise


【解决方案1】:

我刚刚意识到有一种方法可以在 Google Chrome 中获取调用堆栈。虽然有点不方便,但您可以这样做:

function failingCode(arg) {
    try {
        ... the failing code ...
    } catch(e) {
        console.log("failingCode error: "+e.stack);
        debugger;
    }
}

请注意,如果您抛出错误,您需要使用Error 函数来获取堆栈。 (只是throw "my message"不会给栈。)

更新 在此处报告为 Chrome 错误:https://code.google.com/p/chromium/issues/detail?id=458306

【讨论】:

猜你喜欢
  • 2021-11-08
  • 2014-09-16
  • 1970-01-01
  • 2022-10-31
  • 2015-03-24
  • 2015-07-03
  • 1970-01-01
  • 2012-10-16
  • 2019-07-10
相关资源
最近更新 更多