Angular 角度HttpClient Errorhandler最佳方法
处理错误的最好方法是什么 在HttpClient中 这是个好办法吗 我的目标是避免设置相同的设置 方法在所有服务中反复使用Angular 角度HttpClient Errorhandler最佳方法,angular,Angular,处理错误的最好方法是什么 在HttpClient中 这是个好办法吗 我的目标是避免设置相同的设置 方法在所有服务中反复使用 export class HttpErrorHandler { static handleError(error: HttpErrorResponse) { let errorMessage = ''; if (error.error instanceof ErrorEvent) { errorMessage = error.error.m
export class HttpErrorHandler {
static handleError(error: HttpErrorResponse) {
let errorMessage = '';
if (error.error instanceof ErrorEvent) {
errorMessage = error.error.message;
} else {
const errorMessage = `Server returned code: ${error.status}, error message is: ${error.error}`;
}
const msg = environment.production ? 'Something bad happened; please try again later.' : errorMessage;
return throwError(msg);
}
}
或者由一个像
@Injectable()
export class ErrorsHandler implements ErrorHandler {
handleError(error: Error | HttpErrorResponse) {
if (error instanceof HttpErrorResponse) {
// Server or connection error happened
if (!navigator.onLine) {
// Handle offline error
} else {
// Handle Http Error (error.status === 403, 404...)
}
} else {
// Handle Client Error (Angular Error, ReferenceError...)
}
// Log the error anyway
console.error('It happens: ', error);
}
试试这个…这是根据您的需求处理错误的最好方法。只需要在服务类中创建一个方法,如下所示
public errorHandler(err: HttpErrorResponse) : Observable<any>
{
if (err.error instanceof Error)
{
console.error("Client-side error occured.",err.status,err.error.message);
console.error(JSON.stringify(err.error));
}
else
{
console.error("Server-side error occured.",err.status,err.error.message);
console.error(JSON.stringify(err.error));
}
return ErrorObservable.throw(err || 'ERROR');
}
。在这种情况下,您不必为每个rest调用创建errorHandler。。您只需订阅它并对特定的HttpError执行操作即可。这些问题更适合您
.subscribe(
res => {
console.log(res) ;
},
err => {
//**here you do action whatever you want like this** if(err.status==409){}else{}
}
);