处理错误的最佳方法是什么 在HttpClient中。
这可能是一个好方法吗?
我的目标是避免设置相同 所有服务中一遍又一遍的方法。
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);
}
}
或像
这样的ErrorHandler@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);
}
答案 0 :(得分:0)
试试这个...这是根据您的要求处理错误的最佳方法。只需要在服务类中创建一个方法,如下所示。
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');
}
从组件类访问时,只需订阅方法以更好的方式处理错误,如下所示
.subscribe(
res => {
console.log(res) ;
},
err => {
//**here you do action whatever you want like this** if(err.status==409){}else{}
}
);
。在此,您不必为每次休息调用创建errorHandler。您只需要订阅它并对特定的HttpError执行操作