如何捕获承诺运行时Javascript错误
How to catch promise runtime Javascript errors?
我目前正在实现一个基于PDF.js的PDF查看器,作为其中的一部分,我了解了promise对象。
我还了解到运行时错误不会自动显示在调试控制台中:
PDFJS.getDocument(...).then(
function(pdfDocument){
alert(UndefinedVariable); // Not shown in console!
},
function(error){
console.log("Error occurred", error);
}
);
我还没能找到一个漂亮的方式来显示运行时错误的承诺函数,除了添加.done()
如http://www.asyncdev.net/2013/07/promises-errors-and-express-js/所述(这并不适用于PDF.js)或添加.catch(function(error){ console.error(error); })
。
我知道我可以在调试器中中断运行时错误的异常,但我也会在其他异常(在jQuery中)上中断这样做,这意味着我必须在每个页面加载上执行5个jQuery异常,然后才能检查我自己的代码是否包含运行时错误。
是否有任何方法可以强制承诺函数像正常一样记录运行时错误(而无需为每个函数调用编写额外的代码)?
您遇到的问题是then
回调中的异常拒绝.then()
返回的承诺,而不是调用您传入的错误处理程序。这只会触发上的承诺中的错误,您称之为.then()
。所以你可以链接你的处理程序:
PDFJS.getDocument(...).then(function(pdfDocument){
alert(UndefinedVariable); // Now shown in console!
}).then(null, function(error){
console.log("Error occurred", error);
});
这里,then(null, …)
也可以缩写为catch(…)
。
如果没有throws
处理错误的done
方法,您可以通过在setTimeout
中使用throw
来实现它。
是否有任何方法可以强制承诺函数像正常一样记录运行时错误(而无需为每个函数调用编写额外的代码)?
。
在Promise实现中,有一个尝试…catch从回调中获取错误,并将其转换为Promise返回的错误。
你可以做的一件事就是改变尝试…Catch在调用承诺失败之前记录错误。
https://github.com/mozilla/pdf.js/blob/master/src/shared/util.js L936
} catch (ex) {
console.error(ex); // <--- add this line
nextStatus = STATUS_REJECTED;
nextValue = ex;
}
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 将字符串拆分为数组时出现JavaScript错误
- 处理JSON字符串会导致JavaScript错误
- 使用AJAX在剑道网格中分组时出现Javascript错误
- Ajax对web URL的调用导致javascript错误
- 为什么当我尝试在Ionic中使用列表时会出现此JavaScript错误
- 可以't解决Javascript错误
- django出现神秘的javascript错误
- JavaScript错误无效的限定符
- 使用主题运行时portlet liferay时出现Javascript错误
- 绑定函数时在IE7中未实现Javascript错误
- Javascript错误:未捕获引用错误:未定义编辑
- eventListener出现JavaScript错误
- sharepoint站点的internet explorer中出现Javascript错误
- LoadControl HttpCompileException自定义服务器控件JavaScript错误
- 销毁Bootstrap popover时出现Javascript错误
- 无法加载Javascript错误XMLHttpRequest
- 使用JSON.parse时出现无效字符javascript错误
- 修复Javascript错误
- 模板字符串上的netbeans javascript错误(backticks)