0

Chrome 的控制台报告错误。

它列出了一个函数的名称——大概是发生错误的那个。

它不会破裂。它没有告诉我任何进一步的细节。我无法使用“暂停例外”按钮使其中断。

对于如何处理此错误,我是否缺少一些步骤?Chrome 打算让我做什么?这是一个经常被调用的函数,因此将其缩小到特定的用例是一个反复无常的问题。

“它实际上并没有更多帮助”是一个完全可以接受的答案。当我继续与这个神秘的控制台输出作斗争时,我只是希望得到证实或驳斥。

这是展开的

4

2 回答 2

2

尝试打破异常。您可以通过单击带有暂停图标的停车标志按钮来执行此操作。

它在三种颜色之间切换:黑色、蓝色和紫色。

当它为黑色时,它不会因异常而中断。
当它为蓝色时,它会打破所有异常。
当它是紫色时,它会在未捕获的异常上中断。

于 2012-06-02T05:54:06.880 回答
1

虽然在大多数情况下,答案是打破例外,正如我在之前的回答中所展示的,但这里的情况似乎并非如此。

该问题可能是由某些导致生成堆栈跟踪失败的代码引起的。这是V8 中相关代码的一部分:

function FormatStackTrace(error, frames) {
  var lines = [];
  try {
    lines.push(error.toString());
  } catch (e) {
    try {
      lines.push("<error: " + e + ">");
    } catch (ee) {
      lines.push("<error>");
    }
  }
  for (var i = 0; i < frames.length; i++) {
    var frame = frames[i];
    var line;
    try {
      line = frame.toString();
    } catch (e) {
      try {
        line = "<error: " + e + ">";
      } catch (ee) {
        // Any code that reaches this point is seriously nasty!
        line = "<error>";
      }
    }
    lines.push("    at " + line);
  }
  return lines.join("\n");
}

如您所见,<error>如果它无法获取未捕获异常或堆栈帧的字符串表示形式,您将得到,然后当它尝试获取该字符串表示形式时它会失败。例如,如果您运行以下代码:

function NastyException() {}
NastyException.prototype.toString = function() { throw this; };
throw new NastyException();

然后你会得到这个无用的错误:

Uncaught #<error>

诚然,这不是您收到的错误,但也不是那么遥远。

于 2012-06-11T20:36:12.253 回答