angular 6 Uncaught Exception from zone.js
Я пытаюсь создать приложение в angular, но я сталкиваюсь с проблемой, когда мое приложение не может перехватить исключение, генерируемое в zone.js (версия ^0.8.26).
Я относительно новичок в angular, но моя цель - иметь свой собственный ErrorHandler для перехвата всех исключений, которые не были обработаны внутри моих компонентов и сервисов. Но по какой-то причине исключение не дошло до моего ErrorHandler. Согласно консоли моего браузера, исключение создается внутри zone.js (строка 192), ниже приведен фрагмент этого файла.
try {
if (task.type == macroTask && task.data && !task.data.isPeriodic) {
task.cancelFn = null;
}
try {
return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);
}
catch (error) {
if (this._zoneDelegate.handleError(this, error)) {
throw error;
}
}
}
HTTP-запрос, который вызывал ошибку, взят из наблюдаемой. Может ли это означать, что исключение возникает за пределами моего углового приложения? Ниже приведен поток моего кода.
this.xyz.getResult().subscribe(result=> {
this.callAction(result); //this is expected to throw an HttpErrorResponse, but the exception that was raised from zone.js does not reach my ErrorHandler
});
1 ответ
Я только что столкнулся с той же проблемой, что и вы, и хотя у меня есть исправление для моего приложения, оно может не сработать для вашего.
Итак, основываясь на вашем коде:
this.xyz.getResult().subscribe(result=> {
this.callAction(result); //this is expected to throw an HttpErrorResponse, but the exception that was raised from zone.js does not reach my ErrorHandler
});
Что я вошел в result
изначально была строка, скажем "success"
, Изменение формата из строки в объект JSON, такой как {status: "success"}
позволил callAction()
способ выполнить как обычно. Было бы безопасно предположить, что в моем случае исключение было вызвано ответом формата внешнего приложения. Я не совсем понимаю, почему и когда Zone.js вызывает эту ошибку, поскольку я не могу воссоздать ее последовательно.
Возможно, стоит отметить, что при использовании FireFox я получил только исключение Uncaught: ошибка [объект объекта]. Только при переключении в Chrome он перечислял стек ошибок и указывал на Zone.js в качестве подозреваемого.