代码之家  ›  专栏  ›  技术社区  ›  avernet

javascript:有没有一种方法可以让chrome在所有错误上都中断?

  •  239
  • avernet  · 技术社区  · 16 年前

    我正在寻找一个与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>
    

    你可以试试上面粘贴的代码 this page 或者用这个 jsFiddle .

    5 回复  |  直到 7 年前
        1
  •  204
  •   shane    9 年前

    编辑: 我回答的原始链接现在无效 。新的URL将是 https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions 截至2016年11月11日。

    我知道这个问题有答案,但它不再准确。 使用上面的链接^


    (链接替换为上面编辑过的链接)-现在可以将其设置为在所有异常或未处理的异常上中断。(请注意,您需要在 来源 选项卡以查看按钮。)

    Chrome现在还添加了一些其他非常有用的断点功能,比如中断DOM更改或网络事件。

    通常我不会回答一个问题,但我自己也有同样的问题,我发现这个答案现在是错误的,所以我想我应该把这些信息放在这里,以备后来来找我的人使用。:)

        2
  •  243
  •   Maxence shikhar    7 年前

    我很难找到它,所以我贴了图片,上面显示了不同的选项:

    铬 71.0.3578.98

    非常类似的用户界面,至少Chrome 38.0.2125.111[2014年12月11日]

    在选项卡 sources 中: screenshot from chrome 50.0.2661.75

    当按钮被激活时,您可以使用下面的复选框 pause on catched exceptions


    以前的版本

    chrome 32.0.1700.102 [2014年2月3日]

    铬 27.0.1453.93

    铬 71.0.357898 [2018年12月18日]

    非常类似的用户界面,至少铬38.0.2125.111[2014年12月11日]

    在标签中 Sources : enter image description here Screenshot from Chrome 50.0.2661.75

    当按钮被激活时,您可以 Pause On Caught Exceptions 使用下面的复选框: enter image description here


    以前的版本

    铬 32.0.1700 .102 [ 03月2日2014日]

    enter image description here

    enter image description here enter image description here enter image description here

    铬 27.0.1453.96 稳定的

    Debug options

        3
  •  17
  •   Brad Parks    13 年前

    现在,chrome中的“暂停所有异常”按钮支持此功能。

    使能:

    • 转到Chrome开发人员工具中的“源”选项卡
    • 点击窗口底部的“暂停”按钮,切换到“所有异常模式暂停”。

    注意这个按钮有多个状态。继续点击按钮在

    • “暂停所有例外”-按钮是彩色的 浅蓝色
    • “暂停未捕获的异常”,按钮是彩色的 紫色 .
    • “异常时不要暂停”-按钮是彩色的 灰色
        4
  •  1
  •   Matthew Crumley    16 年前

    几乎任何错误都会引发异常。我能想到的唯一错误是语法错误,它发生在任何代码执行之前,所以无论如何都没有地方可以暂停,所有代码都不会运行。

    显然,如果chrome在try-catch块中,它不会在异常上暂停。它只在未捕获的异常情况下暂停。我不知道有什么办法可以改变它。

    如果您只需要知道异常发生在哪一行(那么,如果异常是可重复的,您可以设置一个断点),那么 Error 给定给catch块的对象具有 stack 显示异常发生位置的属性。

        5
  •  1
  •   avernet    16 年前

    不幸的是,Chrome中的开发工具似乎无法像Firebug那样“停止所有错误”。