xhr 对象如何捕捉链接错误

function getUrl(url) {
      return new Promise(function (resolve, reject) {
        var req = new XMLHttpRequest();
        console.log(req);
        req.open('GET', url, true);
        req.onreadystatechange = function () {
          if (req.readyState === 4) {
            if (req.status === 200 || req.status === 304) {
              resolve(req.responseText);
            }
          } else {
            reject(new Error(req.statusText));//发现onerror没有触发后而加上的
          }
        }
        req.onerror = function () {
          reject(new Error(req.statusText));
        }
        req.send();
      })
    }
    getUrl('./index.html').then(function (text) {
      console.log(text);
    }).catch(function (e) {
      console.log(e);
    })

上面是使用pormise封装了一下获取url的过程, './index.html'是一个不存在的路径,返回的是404,一开始是希望利用onerror捕捉错误的,但是发现没有起到作用,然后把reject移动到上面,之后catch是可以输出到错误信息,但是控制台依然会报错
图片描述

有什么方法可以防止浏览器报错

补充说明(问题的核心是如何防止控制台输出 404 notfound, 虽然很多资料也表示不能阻止浏览器输出,但是我不认为这个问题就没有价值,有可能有某些牛人就知道如何防止浏览器输出这样的信息。对于踩这个问题的人,我只能说还没有解决的问题,不等于不能解决,部分人说不能解决,不代表全部人都不能解决)

阅读 4.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题