查找Angular / Ionic HttpClient系统/网络错误代码/消息(不是HTTP状态代码)

时间:2018-02-22 19:08:44

标签: angular networking error-handling httpclient

我在获取有意义的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状态代码不包含的内容。

...谢谢

0 个答案:

没有答案