イベントハンドラ内でエラーが発生すると、コード実行が完全に停止して2番目のイベントコールバックが呼び出されません。例えばJavascriptエラーがコード実行を停止します
:
$(function() {
window.thisDoesntExist();
}
$(function() {
//Do something unharmful and unrelated to the first event
}
あなたは簡単に両方の無名関数でのtry/catchを追加することによって、この(簡体字)の例では、問題を解決することができますが、実際には、これらの機能は、多くの場合、順番に他のいくつかのイベントハンドラを追加しますtry/catchが必要です。私はtry/catchブロックで詰め込まれた非常に反復的なコードで終わります。
私のプロジェクトは、各機能が異なるJSにある(ビルドプロセス中に連結される)モジュラー設計をしています。私は、エラーが他の機能のコード実行を停止しないように、各機能内のエラーを処理するためのより一般的な方法を探しています。
私はすでに次の解決策を試してみました: - window.onerror(あなたがこの機能にtrueを返す場合でも、コードの実行が停止している) - $(ウィンドウ).ERROR()=>非推奨となり、コードの実行が
あなたは私の質問を読みましたか? この単純な例では、両方の匿名関数にtry/catchを追加することで簡単に問題を解決できますが、実際にはtry/catchが必要な他のイベントハンドラを追加することがあります。私はtry/catchブロックで詰め込まれた非常に反復的なコードで終わります。 – Webberig
コードをできるだけ堅牢にしたい場合は、それは妥協点です。 – CBroe
@Webberig、確かに私はそうです。必要な基本的な要件は、(任意の)エラーでコードを実行し続けることです。唯一の方法はtry catchを使うことです。それは最初のステップです。その後、エラーコールバックを使用するか、エラーイベントを発生させるか、エラー処理をしっかりと柔軟にすることができます。 Requirejsのソースコードを参照することもできますし、try catchも使用します。 https://github.com/jrburke/requirejs/blob/master/require.js –