jQuery错误处理程序throw没有被捕获

时间:2013-03-19 10:24:30

标签: javascript jquery exception-handling

所以我有以下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);
}

1 个答案:

答案 0 :(得分:0)

这是因为ajax是异步的,当你的ajaxError func实际被调用时,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,
  });

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