я новичок в угловой. В данный момент я работаю над реализацией глобальной обработки ошибок в существующем угловом приложении.
Проблема: мои ошибки не будут брошены в глобальный обработчик ошибок после использования throw new Error (errObj) в блоке catch подписки.
Что я сделал?
Итак, я выяснил - можно определить собственный обработчик ошибок в app.module.ts (в разделе провайдера) следующим образом:
{
provide: ErrorHandler,
useClass: CustomErrorHandlerService
}
мой customErrorhandlerService выглядит так:
import { ErrorHandler, Injectable} from '@angular/core';
import * as StackTrace from 'stacktrace-js';
@Injectable()
export class CustomErrorHandlerService implements ErrorHandler {
constructor() { }
handleError(error: any) {
console.log('Global ErrorHandler')
console.log('Err: ', error);
// gonna do something, like getting stracktrace and log it to the server..
throw error;
}
}
если я сгенерирую ошибку в одном из моих методов в компоненте в самом начале, как это:
private getPost(): void {
throw new Error('foo'); // ofc if I throw an error right here, the rest will be unreachable code its just for show
this.postfachService.getPostfachItems().subscribe(items => {
this.postfachItems = items;
this.show = true;
}, error => {
console.log('Err: ', error);
throw new Error(error); // it seems that this won't work
}
);
}
он выдаст ошибку глобальному обработчику ошибок. Пока все хорошо.
Но если я пытаюсь выдать ошибку глобальному обработчику в блоке catch, это не сработает. Даже консоль ничего не печатает, похоже, что ошибка просто проглатывается.
У вас есть идея? Может быть, я полностью ошибаюсь, пытаясь выдать ошибку глобальной обработке ошибок в блоке catch?
С уважением,
youpi