How to solve catch error in Observable in angular 8?
You can use catchError
in rxjs/operators
for this.
Try it as follows.
import { catchError } from 'rxjs/operators';
export class DemoService {
getuserdetails(): Observable<user[]> {
return this.http.get<user[]>(this.url)
.pipe(catchError(this.errorHandler))
}
errorHandler(error: HttpErrorResponse) {
return Observable.throw(error.message || "server error.");
}
}
Best way to catch error on observable is:
this.http.get<user[]>(this.url).pipe(
tap(),
catchError(err => { return this.errorHandler(err) }
)
If this.http.get()
is an Promise lave it like You did in Your code .catch(...)
is ok. Try to have catchError(...)
at the end of pipe or before finalize(..)
if You use it.
Before Observables had no .pipe()
and You where chaining operations like in Promises so they change name .then()
to i think flatMap()
and .catch()
to catchError()
So programmer know are it is Observable or Promise.
import { Observable, throwError } from 'rxjs';
import { catchError, } from 'rxjs/operators';
return this.http.get<user[]>(this.url).pipe(catchError(this.errorHandler))
errorHandler(error: HttpErrorResponse) {
return throwError(error.message || "server error.");
}