我正在渲染器过程中使用angularjs开发Electron应用程序。我正在寻找一种将所有无法预测的错误报告给外部服务(在本例中为滚动条)并放置一些自定义逻辑的方法。
装饰角度 $ exceptionHanlder适用于所有未处理的错误...
commonModule.config([
'$provide', ($provide) => {
$provide.decorator('$exceptionHandler', ['$delegate', function($delegate) {
return function (exception, cause) {
<< custom logic >>
$delegate(exception, cause); // fallback to inner wrapper provided by ng-rollbar
};
}]);
}
]);
... ,但如果在如下所示的承诺中发生错误,则该功能将无效:
async function(arg) {
const exists = await checkIfExists(arg);
}
checkIfExists(arg) {
return new Promise((resolve, reject) => { reject(); });
}
我知道有unhandledrejection event,但是在angularjs中捕获它的正确方法是什么? 下面的代码不起作用:
commonModule.config(['$window', ($window) => {
$window.addEventListener('unhandledrejection', function(event) {
<<custom logic>>
Rollbar.error('unhandled rejection', event.reason);
console.log('show me!')
});
}]);
PS:我知道可以使用try-catch块,但是我对代码中每个异步调用一个一个地记录操作错误不感兴趣