如果 fetch Chrome 中的调用失败,那么我返回的唯一错误详细信息是
TypeError: Failed to fetch
在这种情况下,如何向最终用户显示信息丰富的错误消息?
具体:
是否可以获得有关提取失败原因的任何详细信息?
例如,如果服务器崩溃,Chrome DevTools 可能会记录一条 net:ERR_EMPTY_RESPONSE 控制台消息,但似乎无法从 JavaScript 访问此消息。
据我所知,答案是否定的;我认为这是出于安全原因,以避免让恶意 JS 通过检查错误消息来找出哪些网站可以访问,哪些网站不可访问。
是否可以将获取错误与其他 TypeError
区分开来?
如果我无法获取错误详细信息,我至少想用信息丰富的“无法访问网站;请稍后再试”消息替换极其模糊的“无法获取”消息,并且我会喜欢这样做,而不会有任何为其他 TypeError
显示该消息的风险。
我在这里找到的唯一解决方案是检查实际的消息
,看看它是否是“无法获取”
。这显然是特定于浏览器的;它可以在 Chrome 中运行,似乎它可以在 Chrome 的任何用户语言中运行,其他浏览器需要自己的测试和处理。
最佳答案
似乎没有关于网络/权限/输入问题的更多详细信息。
Is it possible to distinguish fetch errors from other TypeErrors?
是的,您只需要捕获
来自fetch
调用的错误:
fetch(…)
.catch(err => new FetchError(err))
.…
class FetchError extends Error {
constructor(orig) {
super();
this.message = "fetch error";
this.details = orig;
}
}
关于javascript - 如何处理 JavaScript 获取错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39393909/