Ответ 1
После некоторых исследований это невозможно. Angular ловит свои ошибки, а затем явно вызывает обработчик исключений - во многих случаях он не просто допускает распространение ошибки.
Я не хочу, чтобы $exceptionHandler обрабатывал любые исключения - я хочу, чтобы они пропелировали до браузера (в первую очередь для тестирования IE в Visual Studio).
Я попытался переопределить $exceptionHandler и просто переустановить ошибку, которая дает мне 10 итераций ошибки $digest (что имеет смысл).
Как полностью отключить его?
ИЗМЕНИТЬ
К сожалению, перезапуск ошибки не решает проблему - IE знает только ошибку из rethrow, а не из источника.
После некоторых исследований это невозможно. Angular ловит свои ошибки, а затем явно вызывает обработчик исключений - во многих случаях он не просто допускает распространение ошибки.
В соответствии с документацией, возможно:
angular.module('exceptionOverride', []).factory('$exceptionHandler', function () {
return function (exception, cause) {
exception.message += ' (caused by "' + cause + '")';
throw exception;
};
});
Этот пример переопределит нормальное действие $exceptionHandler, чтобы make angular исключения терпят неудачу, когда они происходят, а не просто вход в консоль.
Попробуйте выбросить исключение из window.setTimeout
(not $timeout
) задержка выполнения, это позволит вам избежать черной дыры $digest
. Но не уверен, что он сохранит трассировку стека в IE.