如何处理JavaScript提取错误?

前端之家收集整理的这篇文章主要介绍了如何处理JavaScript提取错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果Chrome中的 fetch通话失败,那么我收到的唯一错误信息就是

TypeError: Failed to fetch

在这种情况下,如何向最终用户显示内容丰富的错误讯息?

特别:

是否可以获得有关为什么fetch失败的任何细节?

例如,如果服务器崩溃,Chrome DevTools可能会记录一个控制台消息:net:ERR_EMPTY_RESPONSE,但似乎没有办法从JavaScript访问.

据我所知,答案是否定的;我认为这是为了安全的原因,以避免让恶意的JS找出哪些站点是不可访问的检查错误消息.

是否可以区分其他TypeErrors的提取错误

如果我无法得到错误的详细信息,我至少要用一个内容丰富的“无法获取”来替代“无法访问该网站;请稍后重试”的消息,我想做这不会对其他TypeErrors显示该消息的风险.

我在这里找到的唯一解决方案是检查实际的消息,看看它是否“无法获取”.这显然是浏览器特定的;它适用于Chrome,它似乎可以使用Chrome的任何用户语言,而其他浏览器将需要自己的测试和处理.

解决方法

似乎有可能没有更多关于网络/许可/输入问题的细节.

Is it possible to distinguish fetch errors from other TypeErrors?

是的,您只需要捕获来自抓取电话的错误

fetch(…)
.catch(err => new FetchError(err))
.…

class FetchError extends Error {
    constructor(orig) {
        super();
        this.message = "fetch error";
        this.details = orig;
    }
}

猜你在找的JavaScript相关文章