例外 JavaScriptエラーを抑制しない



javascript エラー 無視 (4)

さて、あなたの印象にもかかわらず、jQuery自体はエラーメッセージを「抑制する」ために何もしません。 今、Firefox 、特にあなたが説明したもののように、ある種の例外を捨てる傾向があります。 例外が発生した場合にアラートコールでJavascriptブロック全体をラップすることは、それに対処するための便利な方法ですが、それでもやはりイライラすることがよくあります。

私はJavaScriptのエラーを見るためにFirebugを使っています。 しかし私もjQueryを使っています。 何らかの理由で、jQueryを使用しているときにJavaScriptエラーが発生することはありません。これは、最初にjQueryを使用する際の最大の問題の1つです。

表示するコードは特にありませんalert(areareg);想像してくださいalert(areareg); arearegが未定義であるか、または何らかのJavaScriptエラーがある場合、Firebugはそれについて私に教えてくれません。 JavaScriptは、警告も通知もなしに失敗するだけです。 これは私がjQueryを使ったことのあるプロジェクトではいつもそうです、そしてそれが私がjQueryを好きではない唯一の理由です。 問題が発生したときにデバッグするのは難しいことで有名です。

どういうわけか私はこの質問がオンラインで提起されているのを見つけるのにさえ苦労しました、もちろん答えました。 しかし、ここで試してみることにしました。

  1. jQueryがエラーメッセージを抑制しないようにする方法はありますか?
  2. 私がこのjQueryに関する問題を常に抱えているのは私だけですか?

編集:私はFirefox(Firebug付き)とChromeの両方を使っています、そして私はjQueryの縮小されていないバージョンだけを使います。 それでも、私の人生の中で、jQueryを使用しているときに、有用でも無用でもなく、実際には通常のJavaScriptエラーでもない、あらゆる種類のjQueryエラーメッセージを見たことがありません。


Answer #1

私はFF 18でも同じ問題を抱えています。JSFとJQueryを使っていますが、それはページ上の単純なJSコードでも起こります。 私は意図的に言葉なしで構文エラーを投げるべきJavaScriptコードをFirebugに入れました。 FF 18には、Firebugに似た独自のコンソールが組み込まれています。 firebugプラグインを無効にすると、console.logメッセージが表示され始めました。 ただし、エラーはまだ表示されていません。 Chromeを試したところ、エラーが表示されます。


Answer #2

私はこの問題に何度か遭遇した。 それはかなり矛盾していて複製するのが難しいです、時々それはバージョン問題に関連しているようです。 設定が変わってもめったに起こらないように思われますが、「次のときに中断」は時々(常にではありませんが)別の方法で失敗するエラーを識別します。

私が気づいたことの一つは、コールバック関数の中で、例えばUIイベントやAJAX呼び出しから引き起こされるコードに対して起こりがちです。 Firefox / Firebugが他のブラウザのように動作してコンソールにエラーを表示することがありますが、次のような驚くほど明確なケースであってもまったく意味がないことがあります。

console.log('something'); // Shows up in console fine
fail  // Other browsers give undefined variable error, Firefox gives nothing
console.log('something else'); // Never reached, so silent error clearly happens

私がこれを見つけた最善のアプローチは:

  • no-showエラーを見つけたら、関数の内側、エラーが隠され、外側に表示され、次のようなコードスニペットが追加されるまで、 console.trace()を使用して戻ります。

     console.trace();
     fail // cause the error, look out for a trace followed by nothing
  • AJAX呼び出しの場合は、何らかの理由でFirefox / Firebugがデフォルトを失うため、基本的なエラーハンドラを手動で追加します。

     $.ajax({
       error: function(a,b,c){
         throw c;
       }, 
       other: '...settings'
     }
    • それがエラー処理関数を追加することができない何かであるならば、try ... catchでそれを包みなさい、例えば:
     try {
       // whatever the code is within which there are no errors
     } catch( err ){
       throw err;
     }

Firefoxがエラーをなくしている範囲内であれば、これですべてのエラーを検出できます。 ただし、コールバック内にコールバックがある場合は注意が必要です。これを2回実行する必要があります。


Answer #3

デバッグにはGoogle Chromeを使用していますが、すべてのjqueryエラーも表示されます(縮小版を使用する場合はエラーに意味のある名前が表示されないため、生のソースを使用することをお勧めします)。 )





firebug