Chrome 的控制台报告错误。
它列出了一个函数的名称——大概是发生错误的那个。
它不会破裂。它没有告诉我任何进一步的细节。我无法使用“暂停例外”按钮使其中断。
对于如何处理此错误,我是否缺少一些步骤?Chrome 打算让我做什么?这是一个经常被调用的函数,因此将其缩小到特定的用例是一个反复无常的问题。
“它实际上并没有更多帮助”是一个完全可以接受的答案。当我继续与这个神秘的控制台输出作斗争时,我只是希望得到证实或驳斥。
Chrome 的控制台报告错误。
它列出了一个函数的名称——大概是发生错误的那个。
它不会破裂。它没有告诉我任何进一步的细节。我无法使用“暂停例外”按钮使其中断。
对于如何处理此错误,我是否缺少一些步骤?Chrome 打算让我做什么?这是一个经常被调用的函数,因此将其缩小到特定的用例是一个反复无常的问题。
“它实际上并没有更多帮助”是一个完全可以接受的答案。当我继续与这个神秘的控制台输出作斗争时,我只是希望得到证实或驳斥。
尝试打破异常。您可以通过单击按钮来执行此操作。
它在三种颜色之间切换:黑色、蓝色和紫色。
当它为黑色时,它不会因异常而中断。
当它为蓝色时,它会打破所有异常。
当它是紫色时,它会在未捕获的异常上中断。
虽然在大多数情况下,答案是打破例外,正如我在之前的回答中所展示的,但这里的情况似乎并非如此。
该问题可能是由某些导致生成堆栈跟踪失败的代码引起的。这是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>
诚然,这不是您收到的错误,但也不是那么遥远。