2009-07-08 6 views
6

私はいくつかの高度な機能(DOM操作、AJAX、フラッシュ通信など)に依存するDHTML/Javascriptアプリケーションを開発しています。私は機能に非常に懸念しています。アプリケーションがデプロイされた後でも、問題が発生した場合でも、その理由と解決方法を知りたいのですが、ユーザーが引き続き使用できることを確認したい例外を厳しくした場合、アプリケーションの機能が低下する可能性があります。ロバストなJavaScriptの例外処理

私は現在、ログと例外処理システムを構築しており、関数がログを生成することができます。例外が検出された場合は、すべてのログが電子メールで送られます。システムはうまくいくが、もっと頑強にしたい。私は提案を探しています。

私が持っているアイデアの1つは、try/catchブロック内のすべてのjavascript関数のボディをラップし、例外をキャッチするときに関数の名前を記録してからグローバルハンドラにエラーをスローすることです。しかし、例外が発生した関数を追跡するだけのコードがたくさんあります。ランタイム例外を見つけて再生するのを簡単にするためのアイデアはありますか?

答えて

4

むしろN機能にNのtry/catchブロックを追加することで対処するよりも、window.onerrorイベントを使用する方が簡単かもしれません。

JavaScriptキットにはa series of examplesがあります。特に3rd:あなたはスタックトレースを好む場合

window.onerror = function (msg, url, line) { 
    alert('Error message: ' + msg + '\nURL: ' + url + '\nLine Number: ' + line); 
    return true; 
} 

、あなたはEric Wendelin's(またはLuke Smith's update)をチェックアウトすることがあります。それは私がクロスブラウザーで作業しようとしていることを知っている少数の1つです。

+1

私は実際に私のgloabl例外ハンドラですべての例外を捕まえているし、また彼のスタックトレースを使用して...問題は、IEで(ほとんどのエラーが発生する)トレースは "匿名関数"の長いリストです実際に例外がどこに発生したかについて実際に私に何か手がかりを与えていません... – Josh

+0

これ以外の回答はありません...あなたの答えは最高のものだと思います。:-) – Josh

+0

@Josh - 私は 'window .onerror'はjQueryイベントハンドラでエラーをキャッチしない可能性があります。 - @stackoverflow.com/questions/205688/javascript-exception-handling – ripper234