У меня есть код с AngularJS:
service.doSomething()
.then(function(result) {
//do something with the result
});
В AngularJS 1.5.9, когда у меня есть ошибка в разделе .then()
, например:
service.doSomething()
.then(function(result) {
var x = null;
var y = x.y;
//do something with the result
});
Я получаю сообщение об ошибке:
TypeError: Невозможно прочитать свойство 'y' null
Но в версии 1.6 с тем же кодом у меня возникает другая ошибка:
Возможно необработанное отклонение: {} undefined
Я знаю, что это связано с это изменение, а одно решение довольно просто, добавив блок .catch()
:
service.doSomething()
.then(function(result) {
var x = null;
var y = x.y;
//do something with the result
})
.catch(console.error);
Теперь у меня снова есть то, что я хочу:
TypeError: Невозможно прочитать свойство 'y' null
Но как получить тот же результат (более подробную ошибку) для всего приложения без добавления блока .catch()
в каждом месте?
Я протестировал предлагаемое решение, чтобы отключить его, добавив:
$qProvider.errorOnUnhandledRejections(false);
Но с этим ситуация еще хуже - у меня нет НИКАКОГО в консоли! Ошибка проглатывается где-то и вообще не регистрируется. Я не уверен, что это проблема с AngularJS 1.6 или с моей конфигурацией.
Есть ли у вас какие-либо идеи о том, как "восстановить" поведение журнала с версии 1.5.9?
EDIT:
Добавление настраиваемого обработчика ошибок:
.factory('$exceptionHandler', function($log) {
return function(exception, cause) {
$log.warn(exception, cause);
};
})
не помогает вообще. В обработчике ошибок я уже получил "завернутую" ошибку.