0

だから私は失敗する次の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);
}
4

1 に答える 1

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,
  });

または、pub/sub パターンを適用して非同期エラーをキャッチすることもできます

于 2013-03-19T10:36:32.200 に答える