javascript - 如何处理 JavaScript 获取错误?

标签 javascript google-chrome exception fetch-api

如果 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/

相关文章:

javascript - 我的随机报价生成器按钮不显示报价。 (不适用于 CodePen 或 Sublime,仅适用于 Stack Overflow)

javascript - 如何获得 iFrame 的选择?

java - finally 添加 return 隐藏异常

javascript - 您如何遍历具有特定类的容器中的每个 div?

javascript - Rails生产模式下如何压缩/public中的js,css文件

javascript - 在运行时使用 AJAX 传递 bool 模型属性

javascript - 在谷歌浏览器中禁用位置栏

html - 在 google.com 上搜索 gmail - 奇怪的事情发生了

wcf - 过错还是不过错

visual-studio - 调试期间算术下溢或上溢异常