如何让Chrome调试器在处理未定义变量时中断或报错

9
我的 JavaScript 代码(数百行)会使 Chrome 卡死,调试后发现一个变量未定义。控制台没有报错信息,这让我的调试更加耗时,因为没有任何错误或异常提示我问题出在哪里。
我不想添加调试代码。有没有一种方法可以让调试器在运行时遇到未定义变量时输出错误、在调试器中中断或抛出异常或显示开发人员有用的任何信息?它不必仅适用于 Chrome。

两个答案似乎都假设 OP 想要探索异常中的堆栈。我理解这个问题的方式是,未定义的值在传播时被忽略到难以定位错误的源头,即使进行作用域检查也很难找到。然后问题是是否可以配置浏览器报告/停止使用 undefined 作为键或数字或布尔计算的默认行为,而不是 undefined、NaN、false 等(叹息!)。如果这是预期的问题,也许需要澄清以吸引更好的答案。 - Elias Hasle
@Elias 我不知道我是否需要改变默认行为或者它是否可以被修改。我不知道我不知道什么。也许你可以提供一个对我和其他人有帮助的答案。这个问题已经快五年了!我甚至都不记得当时的问题是什么,当然现在我已经超越它了。我甚至在另一家公司工作。 - Tony_Henrich
嗨@Tony。:-) 我明白了。恐怕我无法提供帮助。我在寻找答案的过程中发现了这个问题... - Elias Hasle
2个回答

11
您可以使用JavaScript异常暂停功能,在JavaScript错误发生时进入DevTools调试器。它有两种活动模式:暂停所有异常和暂停未捕获的异常。
根据您的经验描述,您正在开发的应用程序可能存在被捕获但未重新抛出或记录的错误。在这种情况下,使用“暂停所有异常”(蓝色暂停图标)将有所帮助。
注意:一些库,如jQuery,会捕获异常并不会重新抛出它们。如果您遇到此类情况,则可能需要跳过这些异常或在所有依赖项加载完成后设置“暂停所有异常”功能。

3
window.onerror = function() { debugger; }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接