У меня есть следующий код (упрощенно и работает в codepen для примера):
var app = angular.module("httptest", []);
app.controller("getjson", ["$scope", "$http", function($scope, $http) {
$http.get("https://codepen.io/anon/pen/LVEwdw.js").
then((response) => {
console.log(response.data)
console.log('in then')
throw 'the error'
}).catch((e) => {
console.log('in the catch')
console.log(e);
});
}]);
Я ожидаю, что, если введен блок catch()
ошибка не будет отображаться в консоли, за исключением случаев, когда она регистрируется явно (т. е. она не отображается красным цветом).Однако это не так, на консоль выводится красное сообщение об ошибке, после чего вводится блок catch()
.Я попытался настроить эквивалентный пример здесь , который не использует AngularJS $http
, и он ведет себя так, как я ожидаю:
var promise1 = new Promise(function(resolve, reject) {
resolve();
});
promise1.then((result) => {
console.log('about to throw error')
throw 'hey'
}).catch(function(error) {
console.log(error);
});
В этом примере, красная ошибка не делает егочерез.
Что здесь происходит, и можно ли подавить обработанную ошибку в случае $http
?