#angular #error-handling #rxjs #angular-httpclient #angular-errorhandler
#angular #обработка ошибок #rxjs #angular-httpclient #angular-errorhandler
Вопрос:
Есть ли способ с помощью HttpClient удалить сообщения об ошибках из консоли браузера?
Мой текущий код выглядит следующим образом:
getStuff(stuffId: string): Observable<Stuff[]> {
return this.httpClient.get<Stuff[]>(this.stuff() stuffId '/stuff/').pipe(
catchError((err) => {
console.log(err.status);
if (err.status === 404) {
console.log('Not found');
}
})
);
}
Мой console.log(‘Не найден’) в инструкции if выполняется, но он по-прежнему выдает стандартную ошибку на консоль.
Моя цель: ничего красного в консоли
Обновить:
Ошибки возникают не в Firefox, а в Google Chrome. Почему ..?
Ответ №1:
Стандартная ошибка, которую вы видите в консоли, на самом деле не из кода. Это из сети, из-за ошибки API. Браузеры учитывают и понимают стандартные коды ответов http. Таким образом, всякий раз, когда любой http-запрос возвращает какой-либо код ответа, отличный от 2xx, они считают это ошибкой и отображают его красным цветом в консоли. К сожалению, вы не можете удалить его. Это делается с помощью браузера.
Комментарии:
1. Вы уверены в этом? Должен быть способ игнорировать ошибку в коде, чтобы ничего не выбрасывалось в консоль, или нет?
2. Нет. Единственный способ сделать это — ответить кодом 2xx из API. Просто взгляните на вкладку сеть. Вы увидите там такую же красную подсветку и для этого API, который выдал код, отличный от 2xx. Хотя вы можете отфильтровать эти ошибки в консоли, используя опцию фильтра в верхней части консоли.
3. Значит, нет способа удалить ошибки с помощью кода? Firefox не выдает эти ошибки, только my console.log (‘Не найден’). Они отображаются в Chrome и Safari, хотя ..
![]()
4. Да. Chrome и Safari ведут себя по-разному, как я уже сказал.
Ответ №2:
Обратный вызов к catchError
должен возвращать наблюдаемое, поэтому вы можете просто вернуть, например, EMPTY
, которое просто завершается и ничего не выдает:
import { EMPTY } from 'rxjs';
...
catchError((err) => {
console.log(err.status);
if (err.status === 404) {
console.log('Not found');
}
return EMPTY;
});
Комментарии:
1. Ошибки по-прежнему выдаются. Я уже пробовал «НИКОГДА». К сожалению, безуспешно..
2. Использование
EMPTY
просто проигнорирует ошибку. Вы уверены, что это не другая ошибка где-то еще, где у вас естьsubscribe()
вызов без какого-либо обработчика ошибок?3. Нет, я почти уверен. Я подписываюсь на observable в другом месте, в котором уже реализована обработка ошибок.