3

Chrome開発ツールを使用してJavaScriptをデバッグしています。Chromeに「例外で一時停止しない」と言ってスクリプトを読み込むと、正しい行が強調表示されたときに何がうまくいかなかったのかがわかりやすく説明されます。

var back_buffer = goog.dom.getElement('back_buffer').getContext('2d');
  --> "Uncaught TypeError: Cannot call method 'getContext' of null"

OK、それは理にかなっています。私のキャンバス要素の名前にタイプミスがあるので、「getElement」はnullを返します。

さて、私の質問に移りましょう。Chromeに「キャッチされなかった例外で一時停止」するように指示すると、スクリプト内の問題のある行が正しく強調表示されますが、わかりやすいエラーの説明はなくなりました。どうして?デバッグモードでも、非常に役立つのでエラーメッセージを表示したいと思います。突っついたがどこにも見つからなかった。

誰かがここで助けることができますか?

4

5 に答える 5

6

現在、これを行う良い方法はないようです。これはあなたが得ることができる最も近いものです: ここに画像の説明を入力

于 2012-10-13T18:19:24.997 に答える
3

そのスクリプトの実行が例外に入る直前に一時停止されるため、エラーは表示されません。

エラーの直前で一時停止しているため、コンソールでいくつかのことをデバッグできます。あなたが話している状況で私がする傾向があり、スコープ変数がそれ以上の情報を提供していない場合は、いくつかのウォッチ式を追加するか、コンソールでいくつかのコマンドを実行します。

back_buffer の場合、たとえば、このgoog.dom.getElement('back_buffer')ようなウォッチ式を追加して、それが何に解決されるかを確認できます。その式でエラーが発生した場合、スクリプト エラーが発生した場合と同様に、エラー メッセージが表示されます。

一部の人々には、スクリプトの実行が停止されたときに実行コンテキストが一時停止時のスクリプトの実行コンテキストと同じであることは完全に明らかではない可能性があります。そのため、すべてのローカル変数はコンソールで console.log() またはconsole.dir() など。

プリティ プリントをオンに設定すると、一時停止した 1 行であまり処理が行われないため、ほとんどの場合、エラーの原因とその理由を理解するために長い間検索する必要はありません。

PM5544、お役に立てば幸いです。

于 2012-10-13T23:36:59.940 に答える
1

実行すると、問題のあるソース行のすぐ下にある赤いバブル メッセージに同じテキストが表示されるはずです。

于 2012-10-04T07:31:52.107 に答える
0

例外をキャッチしてログに送信するとどうなりますか。

try
  {
       var back_buffer = goog.dom.getElement('back_buffer').getContext('2d');
  }
catch(err)
  {
        console.log(err);
  }

コンソールに入ると、オブジェクトをより詳細に調べることができます。

于 2012-10-16T15:53:22.517 に答える
0

もう一度「ステップ」を実行すると、赤い泡が表示されます。エラー/バブル動作が発生する前に一時停止するため、これは論理的です。

于 2012-10-16T15:35:58.353 に答える