我想抓住在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没有.