angular 6 Uncaught Exception from zone.js - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать приложение в 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 Ответ

0 голосов
/ 04 сентября 2018

Я только что столкнулся с той же проблемой, что и вы, и хотя у меня есть исправление для моего приложения, оно может не сработать для вашего.

Итак, исходя из вашего кода:

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 Exception: [Object object] error. Только при переключении на Chrome он перечислял стек ошибок и указывал на Zone.js в качестве подозрительного.

...