Pet*_*ols 45 javascript es6-promise
我想抓住在javascript Promise中发生的所有未处理的异常/拒绝.是否有一种很好的方法来捕获它们而不.catch(..)
在Promise链的每一端添加一个?(如果忘记添加此项,则错误会无声地消失).
Google Chrome中的开发者控制台可以记录它们,我也喜欢在生产环境中记录它们.
对于普通的javascript异常,我使用该window.onerror
函数,但Promise中的错误调用此函数.
例:
window.onerror = function (e) {
alert("unhandled error: " + e);
};
var p = new Promise(function (resolve, reject) {
var nullObject = null;
// Raise a TypeError: Cannot read property 'forceNullError' of null
var x = nullObject.forceNullError();
resolve();
});
p.then(function () { alert('success'); });
Run Code Online (Sandbox Code Playgroud)
JSFiddle:https://jsfiddle.net/f7zwej6L/
*)我注意到WinJS有一个.done(..)
我想要的方法,但Native Promises没有.
Val*_*gin 75
整个世界都在等待unhandledrejection
和rejectionhandled
事件.截至2016年3月,Chrome现在是第一个支持它的人.
例:
window.addEventListener('unhandledrejection', function(event) {
console.error('Unhandled rejection (promise: ', event.promise, ', reason: ', event.reason, ').');
});
Run Code Online (Sandbox Code Playgroud)
规格:HTML生活标准
Mozilla开发人员: onrejectionhandled,onunhandledrejection
Ben*_*aum 20
请注意,在Node中调用事件unhandledRejection
:
process.on('unhandledRejection', function(err, promise) {
console.error('Unhandled rejection (promise: ', promise, ', reason: ', err, ').');
});
Run Code Online (Sandbox Code Playgroud)
在版本12+上,节点将终止这些拒绝.