有关新 HttpClient 的 Angular 文档https://angular.io/guide/http有一个“获取错误详细信息”部分,其中显示了如下所示的示例。我已修改评论以记录我的观察结果,哪些基本错误类最终出现在哪里。
http
.get<ItemsResponse>('/api/items')
.subscribe(
data => {...},
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
// we never seem to get here
console.log('An error occurred:', err.error.message);
} else {
// no network connection, HTTP404, HTTP500, HTTP200 & invalid JSON
console.log(`Backend returned code ${err.status}, body was: ${err.error}`);
}
}
);
因此,单个通道上至少会出现 3 种完全不同类别的错误(网络、http、响应解析),并且对于每种类型,必须在 HttpErrorResponse 的另一部分中搜索实际原因。
通过标准错误码只能识别一类HTTP错误。但另外两种呢?
当我拔掉网络插头时,我得到了非常明显的 err.message =“(未知 url)的 Http 失败响应:0 未知错误。”非常具有描述性。
当新的内部 JSON 解析失败时,它表示存在语法错误 - 但不是在什么位置/字符(由 JSON.parse() 返回)。也可以看看here
超时等其他错误怎么办?
我在哪里可以找到这方面的文档?有没有人找到一种方法来普遍分析这个问题,以便可以向用户提供有意义的消息?
Win 上 Chrome 中的 Angular 5.2,后端:ASP.NET4.6.1 纯 IHttpHandler