我在获取有意义的Angular HttpClient系统/网络错误消息(不是HTTP状态代码)时遇到问题,因此我可以记录/报告它们。我有一个代码类似于:
的提供程序constructor(public http: HttpClient) {}
getData() {
return this.http.get<Item[]>(this.url)
.pipe(
retry(3),
catchError(this.handleError)
);
}
private handleError(error: HttpErrorResponse) {
let errmsg:string;
console.error(JSON.stringify(error));
if (error.error instanceof ErrorEvent) {
errmsg = `client/network error: ${error.error.message}`;
} else {
errmsg = `server error: ${error.status}: ${error.error}`;
}
console.error(errmsg);
return new ErrorObservable(errmsg);
}
使用离子服务运行应用程序,在正常条件下工作,但是当我停止我的Tomcat服务器时,任何有用的诊断信息在到达handleError()之前都会丢失。
Javascript控制台显示:
GET https... net::ERROR_CONNECTION_REFUSED (at polyfills.js:3)
来自JSON.stringify()的handleError()控制台消息包括:
status: 0
statusText: Unknown Error
name: HttpErrorResponse
message: Http failure response for (unknown url): 0 Unknown Error
handleError()末尾的console.error(errmsg)产生:
server error 0: [object ProgressEvent]
我错过了什么?如何在我手中获得正确的错误代码/消息,我可以做一些有用的事情?我希望能够记录一条有用的错误消息,指出DNS错误或连接被拒绝或者其他什么,HTTP状态代码不包含的内容。
...谢谢