Angular 5+ GlobalErrorHandler не будет срабатывать после "throw new Error (errorObj)" в catch-блоке подписки - PullRequest
0 голосов
/ 31 октября 2018

я новичок в угловой. В данный момент я работаю над реализацией глобальной обработки ошибок в существующем угловом приложении.

Проблема: мои ошибки не будут брошены в глобальный обработчик ошибок после использования 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...