gpt4 book ai didi

javascript - 在 Chrome 中重新抛出错误以调试 javascript 的更好方法

转载 作者:行者123 更新时间:2023-11-28 08:13:02 24 4
gpt4 key购买 nike

Chrome 调试工具在大多数情况下都很棒,但最近我对重新抛出的错误感到恼火。似乎没有任何方法可以查看调用堆栈,除非您将其设置为在捕获异常时暂停,但随后您会遇到来自其他库的大量错误。如果您想很好地显示错误,那么在异常上暂停就变得毫无用处。

考虑这个例子(http://jsfiddle.net/redbmk/83y8L/1/):

HTML:

<button id="push-me"></button>

Javascript:

function beDangerous() {
var one = 1, rand = parseInt(Math.random() * 2);

if (rand === one) console.log("You Win");
else if (rand === zero) console.log("You Lose");
}

function warnUser(error) {
alert("Hey, something went wrong! Refresh the page");
throw error;
}

function runCode() {
try {
beDangerous();
} catch (e) {
warnUser(e);
}
}

document.getElementById("push-me").addEventListener("click", runCode);

当您遇到错误时,调用堆栈会显示 warnUser 引发了错误并由 runCode 调用。没有办法追溯到 beDangerous 并查看当时的变量是什么。您可以看到堆栈跟踪,但只能通过查看 error.stack 来查看,而这不会为您提供任何上下文。用 debugger 替换 throw error 似乎没有帮助(并且不允许您关闭调试)。

有更好的方法吗?这个问题已经困扰我一段时间了。

顺便说一下,this question说抛出 error.stack ,但这对我不起作用(据我所知, stack 属性无论如何都是非标准的,所以这不起作用对于其他浏览器正确)。 This question说这是 Chrome 中的一个已知错误,在版本 19 中标记为已修复,但在我的版本 35 上却发生了这种情况。

最佳答案

这是一个different ,但也是 Chrome 中的已知错误,不幸的是,它被标记为 wontfix。看来 Firefox 开发工具也有同样的问题。

关于javascript - 在 Chrome 中重新抛出错误以调试 javascript 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com