我在处理Angular 4中的错误时遇到了问题。请告诉我正确的方法。当服务器响应错误时,我想将其重定向到缓存块,当状态为403时,我想要有一个特定的行为。当我检查第一个map()中的状态并从那里抛出一个错误 - catch执行块,但错误作为带有堆栈跟踪的字符串传递。它无法再次识别catch块中的状态。怎么做正确的方法?
getLoggedInUser(): Observable<User> {
return this.http.get(this.baseApiUrl + `api/user/me`)
.map((res: Response) => {
if(res.status < 200 || res.status >= 300) {
console.log(res.status);
throw new Error();
}
else {
return res.json();
}
})
.map((user) => {
let deserializedUser = new User().deserialize(user)
this._loggedInUser = deserializedUser;
return deserializedUser;
})
.catch((errorStatus: any) => {
console.log(errorStatus.status);
if (errorStatus === "403") {
console.log(errorStatus);
this.isRequestForbidden = true;
}
return Observable.throw(errorStatus || 'Server error')
});
}