我正在寻找一种与Firebug的"在所有错误上中断"功能相当的Chrome浏览器。在 "脚本 "选项卡中,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][2]。
编辑:我原来回答的链接现在无效了.较新的网址将是https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions,截至2016-11-11。
我意识到这个问题有一个答案,但它已经不再准确。使用上面的链接^
(链接被上面的编辑所取代) - 你现在可以把它设置为在所有的异常或只是未处理的异常上断开。(注意,你需要在源标签中才能看到这个按钮)。
Chrome还增加了一些其他非常有用的断点功能,例如在DOM变化或网络事件中断点。
通常我不会重新回答一个问题,但我自己也有同样的问题,而且我发现了这个错误的答案,所以我想我应该把这些信息放在这里,供后来的人搜索。)
几乎所有的错误都会抛出一个异常。我能想到的唯一不能使用"异常时暂停"选项的错误是语法错误,它发生在任何代码被执行之前,所以无论如何都没有地方可以暂停,而且没有代码会运行。
显然,如果异常发生在try-catch块内,Chrome就不会暂停。它只对未捕获的异常进行暂停。我不知道有什么办法可以改变它。
如果你只需要知道异常发生在哪一行(那么你就可以在异常可重现的情况下设置断点),提供给catch块的Error
对象有一个stack
属性,显示异常发生的位置。