关于#catch#的问题,如何解决?

img


控制台打印

img


点击确认框的确定按钮之后,走了发送请求的then,但是直接就走确认框的catch了

你的最后一个catch 打印一下错误信息看一下就知道 问题出在哪了

在Promise的链式调用中,只要有一次then抛出异常,就会进入catch。从打印的结果来看,并没有“发送请求了”这个打印项,所以是网络请求出问题了。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/171270
  • 除此之外, 这篇博客: try..catch 不能捕获的错误有哪些?注意事项又有哪些?中的 与 异步代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 同样,try..catch无法捕获在异步代码中引发的异常,例如setTimeout

    try {
      setTimeout(function() {
        noSuchVariable;   // undefined variable
      }, 1000);
    } catch (err) {
      console.log("这里不会被执行");
    }
    

    未捕获的ReferenceError将在1秒后引发:

    ➤ ⓧ Uncaught ReferenceError: noSuchVariable is not defined
    

    所以 ,我们应该在异步代码内部使用 try..catch 来处理错误:

    setTimeout(function() {
      try {
        noSuchVariable;
      } catch(err) {
        console.log("error is caught here!");
      }
    }, 1000);