У меня есть код с AngularJS:Возможно необработанное отказ в угловом 1.6
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: Cannot read property 'y' of null
Но в версии 1.6 с таким же кодом у меня есть другая ошибка:
Possibly unhandled rejection: {} undefined
Я знаю, что это связано с this change, и единственным решением является довольно простым добавлением .catch()
блок:
service.doSomething()
.then(function(result) {
var x = null;
var y = x.y;
//do something with the result
})
.catch(console.error);
Теперь я снова иметь то, что я хочу:
TypeError: Cannot read property 'y' of null
Но как получить тот же результат (более подробную ошибку) для всего приложения без добавления блока .catch()
в каждом отдельном месте?
Я протестировал предложенное решение отключить, добавив:
$qProvider.errorOnUnhandledRejections(false);
Но с этим ситуация еще хуже - у меня нет НИЧЕГО в консоли! Ошибка проглатывается где-то и вообще не регистрируется. Я не уверен, что это проблема с AngularJS 1.6 или с моей конфигурацией.
Есть ли у вас какие-либо идеи о том, как «восстановить» поведение ведения журнала из версии 1.5.9?
EDIT:
Добавление пользовательского обработчика ошибок:
.factory('$exceptionHandler', function($log) {
return function(exception, cause) {
$log.warn(exception, cause);
};
})
не поможет. В обработчике ошибок я уже получил «завернутую» ошибку.
Понятия не имею. Но я недавно вернул свое приложение с 1.6 до 1.5.x .. У меня было много проблем с 1.6. – Ved
Я тоже вернусь, особенно после просмотра ответа ниже. Я потратил два дня на эту ерунду. – Sharondio