Используйте Angular ErrorHandler и результат ошибки карты - PullRequest
0 голосов
/ 25 февраля 2020

Наша текущая ситуация такая же, как описано, у нас есть огромное приложение angular, в котором много разных вызовов API запускаются в различных компонентах с обработкой ошибок, поэтому ошибка будет отображаться пользователю с тост-сообщением. В нашем HttpService мы делаем что-то вроде этого:


lorem.pipe(
 ...
 catchError(this.formatError)
);
...

formatError(error) {
   return throwError(error.error);
}

error.error содержит JSON сообщение об ошибке типа { success: false, code: 'XY' }

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

Теперь проблема: Мы используем Sentry.io для захвата клиентских исключений, используя функциональность ErrorHandler angular, но похоже, что функция handleError исключает правильное Object типа Event и, следовательно, мы получаем много ложных сообщений об ошибках.

Мой вопрос: есть ли возможность map результата ошибки после его выдачи, чтобы handleError функция ErrorHandler получает действительный Event, но раздел ошибки в subscribe наблюдаемого внутри компонентов все равно получит JSON-Object как ошибку, поэтому нам не нужно переписывать каждую ошибку и все равно получите Event для ErrorHandler?

1 Ответ

0 голосов
/ 25 февраля 2020

Sentry.io имеет определенные c обработчики: ErrorHandler обрабатывает только типы ошибок. Если вы хотите убедиться, что это событие, вам нужно убедиться, что тип предмета, который вы выбрасываете, является ошибкой. В вашем случае вам нужно убедиться, что вы throwError(new Error(error)).

Более предпочтительно, вместо этого вы создадите собственный класс для вашей ошибки, подобный этому формату: enter image description here

...