Я разрабатываю приложение Electron с angularjs в процессе рендеринга.Я ищу способ сообщать обо всех непредвиденных ошибках во внешнюю службу (в моем случае - rollbar) и добавляю некоторую настраиваемую логику.
украшение углов $ 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(); });
}
Я знаю, что есть событие необработанного отклонения но как правильно его перехватить в angularjs? код ниже не работает :
commonModule.config(['$window', ($window) => {
$window.addEventListener('unhandledrejection', function(event) {
<<custom logic>>
Rollbar.error('unhandled rejection', event.reason);
console.log('show me!')
});
}]);
PS: IЯ знаю, что может использовать блок try-catch, но меня не интересует регистрация операционных ошибок по одному для каждого асинхронного вызова в коде