web-dev-qa-db-ja.com

JavaScript:Chromeがすべてのエラーを解決する方法はありますか?

私はChromeでFirebugの「すべてのエラーを解消」機能と同等のものを探しています。 [スクリプト]タブでは、Chromeは「すべての例外を一時停止」していますが、これはすべてのエラーを解決するのと同じではありません。

例えば、次のコードでページをロードするとき、私はChromeが行foo.bar = 42で中断したいと思います。代わりに、「すべての例外で一時停止」を有効にしても、期待どおりの結果が得られません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <script type="text/javascript">

            function doError() {
                foo.bar = 42;
            }

            window.onload = function() {
                try {
                    doError();
                } catch (e) {
                    console.log("Error", e);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>

上に貼り付けたコードをこのページに するか 、またはこのコードを使用する jsFiddle

246
avernet

編集:私が回答した元のリンクが無効になりました新しいURLは になります。https://developers.google.com/web/ tools/chrome-devtools/javascript/add-breakpoints#exceptions 2016-11-11現在。

私はこの質問に答えがあると思いますが、それはもはや正確ではありません。 上のリンクを使用してください^


(リンクは上記の編集に置き換えられました) - すべての例外または未処理の例外で中断するように設定できるようになりました。 (ボタンを表示するには、[ソース]タブにいる必要があります。)

Chromeはまた、DOMの変更やネットワークイベントの中断など、他の本当に便利なブレークポイント機能も追加しました。

通常、私は質問に再回答しませんが、私は同じ質問を自分で持っていたので、この間違った答えを見つけました。 :)

204

これはChromeの[すべての例外で一時停止]ボタンでサポートされるようになりました。

有効にするには:

  • Chromeデベロッパーツールの[ソース]タブに移動します
  • ウィンドウ下部の[一時停止]ボタンをクリックして、[すべての例外モードで一時停止]モードに切り替えます。

このボタンには複数の状態があります。ボタンをクリックして切り替えます

  • 「すべての例外で一時停止」 - ボタンは水色で水色
  • 「キャッチされていない例外で一時停止」すると、ボタンは紫色の紫色になります。
  • 「例外で一時停止しないでください」 - ボタンの色は灰色です
17
Brad Parks

残念ながら、Firebugがそうであるように、Chromeの開発者ツールは「すべてのエラーを止める」ことができないようです。

1
avernet

ほぼすべてのエラーが例外をスローします。私が考えることができる唯一のエラーは "例外時に一時停止"オプションではうまくいかないだろう、それはコードのどれかが実行される前に起こる構文エラーである、とにかく一時停止する場所がなく、コードも実行されません。

どうやら、Chromeは例外がtry-catchブロックの中にあっても一時停止しません。それはキャッチされていない例外で一時停止します。変更する方法がわかりません。

例外がどの行で発生したのかを知る必要があるだけなら(例外が再現可能であればブレークポイントを設定できます)、catchブロックに渡されるErrorオブジェクトには、例外が発生した場所を示すstackプロパティがあります。

1
Matthew Crumley