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 в качестве подозреваемого.

Другие вопросы по тегам