Загрузка…
Загрузка…
В RxJS/Angular ошибки идут в канал error observable. Типичные уровни защиты:
catchError, retry / retryWhen;subscribe — колбэк error (хуже для управляемого UI-состояния);ErrorHandler для синхронных/необработанных ошибок вне потока.this.http.get<Product[]>('/api/products').pipe(
retry({ count: 2, delay: 300 }),
catchError((err: HttpErrorResponse) => {
if (err.status === 404) {
return of([] as Product[]);
}
return throwError(() => err);
}),
);Интерцептор:
export const errorInterceptor: HttpInterceptorFn = (req, next) =>
next(req).pipe(
catchError((err: HttpErrorResponse) => {
if (err.status === 401) {
// redirect to login / refresh token
}
return throwError(() => err);
}),
);Правила: не глотайте ошибки молча; различайте сетевые сбои и бизнес-ошибки тела ответа ({ code, message }); для UI показывайте понятное сообщение; после catchError, вернувшего запасной поток, исходная ошибка «поглощена». Для форм часто мапят ошибку в signal/BehaviorSubject состояния экрана и отдельно логируют в телеметрию.
