Firebugの"break on all errors"機能に相当するものをChromeで探しています。Chromeのスクリプトタブには、"pause on all exceptions"がありますが、これはすべてのエラーでブレークするのとは全く同じではありません。
例えば、以下のようなコードが書かれたページを読み込む際、foo.bar = 42
という行でブレークしてほしいと思います。しかし、"Pause on all exceptions"を有効にしても、期待通りの結果は得られません。
<!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][2]を使って試してみてください。
編集:私が答えたオリジナルのリンクは現在無効.新しいURLは2016-11-11の時点でhttps://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions となります。
この質問には答えがあると思いますが、もはや正確ではありませんԅ。上のリンクを使ってください^。
(リンクは上記の編集されたものに置き換えられました) - すべての例外でブレークするようにも、処理されない例外だけでブレークするようにも設定できるようになりました。(このボタンを表示するにはSourcesタブにいる必要があることに注意してください)
Chromeには他にも、DOMの変更やネットワークイベントでのブレークなど、非常に便利なブレークポイント機能が追加されています。
通常、質問に再回答することはありませんが、私自身が同じ質問をしていて、今となっては間違った回答を見つけたので、後から検索してきた人のためにこの情報をここに入れておこうと思いました。)
どのようなエラーでも例外が発生します。例外発生時に一時停止するオプションが使えないエラーとして考えられるのは、シンタックスエラーだけです。シンタックスエラーはコードが実行される前に発生するので、一時停止する場所がなく、コードも実行されません。
どうやらChromeは、例外がtry-catchブロックの中にある場合には一時停止しないようです。キャッチされていない例外に対してのみ一時停止します。これを変更する方法を私は知りません。
例外がどの行で発生したかを知りたいだけなら(その例外が再現可能であればブレークポイントを設定することができます)、キャッチブロックに渡されるError
オブジェクトには、例外が発生した場所を示すstack
プロパティがあります。