【问题标题】:jQuery error hander throw is not catched [duplicate]jQuery错误处理程序抛出未捕获[重复]
【发布时间】:2013-03-19 10:24:29
【问题描述】:

所以我有以下失败的 ajax 查询。 ajaxError 被调用并引发异常。但不幸的是,没有捕获到异常。任何想法如何捕捉它?

try {
  function ajaxError(request, type, message) {
    throw 'ajaxerror ' + type + ' ' + message;
  }

  jQuery.ajax({
      url: 'http://nonexisting-example.com',
      error: ajaxError,
  });
}
catch (error) {
  alert('This: ' + error);
}

【问题讨论】:

    标签: javascript jquery exception-handling


    【解决方案1】:

    这是因为 ajax 是异步的,当你的 ajaxError 函数实际上被调用时,catch 块已经通过了。如果您想捕获在 ajax 调用期间出现的错误,您可以执行以下操作:

    function ajaxError(request, type, message) {
        try {
          throw 'ajaxerror ' + type + ' ' + message;
        } catch (error) {
          alert('This: ' + error);
        }
    
      }
      jQuery.ajax({
          url: 'http://nonexisting-example.com',
          error: ajaxError,
      });
    

    或者您可以应用发布/订阅模式来捕获您的异步错误

    【讨论】:

    • 我需要的是一种从 ajax 回调中遍历错误的方法。但是,诸如 .done(function () {callback(data, error);}) 之类的回调将是合理的。我只是希望会有一个更好的解决方案,并且在搜索过程中忘记了原始解决方案在某种程度上可能很漂亮。但是感谢您写得很好。
    猜你喜欢
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多