2012-03-27 7 views
1

例えば、ブラウザ、Opera、Chromeなどに、処理されない例外が発生した場合にスクリプトの実行を停止しないように指示する方法はありますか?私はちょうどブラウザでいくつかのJSスクリプトをテストする必要がありますが、ページには別の(非通常のブラウザ)実行環境用のコードも含まれていますので、try/catchでラッピングするコードは変更できません。ブラウザでJSキャッチされていない例外を無視する

Chromeの場合、ハンドラー機能を設定するコードをに設定しようとしましたが、これはtrueを返すだけです。エラーはコンソールに表示されませんが、スクリプトの実行は中止されました。

具体的にはAppcelerator Titaniumプラットフォーム用のコードが含まれていますが、一般的なjQueryコードのみをテストしていますので、ブラウザでやりたいと思います。

+2

try/catchで関数を既にラップしていますか?ただ尋ねる。 – kpcrash

+0

私が言ったように、私はページに含まれるスクリプトを変更すべきではありません。 –

+0

正しいですが、外部ソースから関数を呼び出している場合でも、それらの呼び出しをラップすることができ、ブラウザがエラー時にアラートを吐き出さないようにする必要があります。 – kpcrash

答えて

0

あなたの考えが現実的に見えるように、現実には強制することは不可能です。比較的

、Javaプログラミング言語の未チェックの例外は、(例えばRuntimeExceptionとして - あなたがから回復することはできません例外)しながら、あなたは(あなたがから回復する可能性のある例外)チェック例外を処理する力だけであなたのコントロールの外に、実行時に通常発生する可能性があります。それらは本質的にであるため、は回復できません。

JS JVMから発生する例外は、Javaとは異なり、チェック済みおよび未チェックのカテゴリでは分離できません。そのような区別はないので、スクリプトを停止させないようにすることはできません。

機能/無限大を分割するとどうなりますか?あなたはそれからどのように回復すべきですか? それぞれ異なるシナリオには明確な答えがあります。このため、残念で有効な応答は、Exceptionが発生する恐れがあるたびにブロックtry catchを使用してコードを停止し、その状況に特化して処理することだけです。 window.onerrorイベントハンドラについては


それは実行時例外をキャッチしていないので、それはこの問題とは無関係である、それはオリジナルの例外がtry catchブロックでキャッチされていない場合に発生するエラーをキャッチ。そのため、実際の元の例外メッセージに「Uncaught exception:xxxxx」という壮大なメッセージが追加されます。例外は既に発生しています。スクリプトはすでに停止しています。この時点で必要な方法で表示するだけです。

2

あなたは

setTimeout(THIS_MIGHT_THROW, 0) 

繰延方法で疑わしいコードを呼び出す場合、スローされたエラーは、「スレッド」または「マイクロタスク」を終了するが、あなたの実行の残りの部分には影響しません。

+0

いつか私はこれを愛しています、私はこれを憎むいくつかの日... – Sebas

関連する問題