13

重複の可能性:
JavaScript例外処理

javascriptコードの100%がjQueryイベントハンドラーとして実行されるWebアプリケーションがあります(ほとんどのjQueryアプリはこのようなものだと思います)。

問題は、グローバル例外ハンドラーをどのように定義できるかです。つまり、jQueryイベントハンドラー内で発生する例外がキャッチされないときに呼び出される関数の場合(onload、クリック、成功したajax呼び出し、ajaxエラーなど)。私の関数はエラー情報(例外、スタックトレースなど)を受け取ります。

明確化:サーバーまたはネットワークによって生成されたajaxの問題をグローバルにキャッチすることを意味するのではなく、コードの(おそらく)バグが原因である問題をグローバルにキャッチすることを意味します。

4

2 に答える 2

15

使用できますwindow.onerror: https://developer.mozilla.org/en-US/docs/DOM/window.onerror

window.onerror = function errorHandler(msg, url, line) {

  console.log(arguments);

  // Just let default handler run.
  return false;
}
于 2013-01-17T08:20:55.953 に答える
3

これは、アスペクト指向プログラミングの概念を使用して実現できると思います。

jQuery.event.dispatchエラーを処理するラッパーを簡単に作成できます。

(function () {
    var temp = jQuery.event.handle;
    jQuery.event.handle = function () {
       try {
          temp.apply(this, arguments);
       } catch (e) {
          console.log('Error while dispatching the event.');
       }
    }
}());
$(document).click(function () {
    throw 'Some error...';
});

このアプローチを使用すると、内部インターフェースが変更されるため、非常に注意する必要があります

  • 上記の例は、jQuery 1.7.1jQuery.event.dispatchではなく、jQuery v1.6.3 で機能することに注意してくださいjQuery.event.handle
于 2013-01-17T08:34:10.227 に答える