gpt4 book ai didi

javascript - 从 firefox 捕获错误事件消息

转载 作者:行者123 更新时间:2023-11-29 15:43:42 25 4
gpt4 key购买 nike

我找不到在 firefox 下捕获错误信息的方法:

window.addEventListener("error", handleException, false);

...

function handleException(e) {
alert(e);
return false;
}

...

<script>
throw new Error('sdasd');
</script>

这很好地进入了handleException方法但是e参数是一个error event under firefox 我不知道如何获取关联消息。例如,在 chrome 中,我通过 e.message 获取消息,因为在错误冒泡到没有被捕获之后,会在窗口级别触发一个自动错误(参见 this fiddle:最终错误是"Uncaught"),其中包含我手动引发的原始错误。

所以为了在 firefox 下有相同的行为(如果你在 firefox 下运行 fiddle ,你会看到消息是“未定义的”)我找到了一个解决方法,包括封装一个错误引发函数来设置一个手动的“最后一个错误”架构:

function err(I_sText) { 
g_lastManualError = new Error(I_sText);
throw g_lastManualError; //this variable is global so I can get the message from anywhere
}

所以我没有执行 throw new Error(..),而是只调用了 err(..)。这有效,至少对于用户定义的异常是有效的,这是我最关心的。在我的处理程序 handleException 中,我正在咨询全局变量。

你知道我还能怎么做吗?我对这个解决方案不满意。

谢谢,S.

最佳答案

作为演示,我对您的代码做了一些修改:

function handleException(e) { 
console.log(e);
alert(e);
return false;
}
window.addEventListener("error", handleException, false);

try {
throw new Error('sdasd');
}
catch (e) {
console.log(e)
}
console.log('after exception 1');
throw new Error('foo');
console.log('after exception 2');

运行这段代码(在 Firebug 中)向我展示了这一点:

Error: sdasd
[Break On This Error]

Filtered chrome url chrome://firebug/content/console/commandLineExposed.js

comman...osed.js (line 175)
<System>

after exception 1

"Error: foo ` throw new Error('foo');` @14"

如果您 try catch 错误,请使用 try {...} catch { ...}。看起来你只是绑定(bind)到一个错误事件,所以你抛出的异常仍然会传播到窗口并告诉 JS 引擎停止。在 Chrome 中运行这段代码,你会发现你永远不会看到“异常 2 之后”,但你会看到“异常 1 之后”。

异常(由 throw 创建)的目的是停止代码执行,除非有代码处理该特定异常。您可以在 MDN page for try-catch 上查看示例

编辑:我刚刚想到您可能正在 try catch jQuery 错误事件。如果是这种情况,您的事件绑定(bind)是正确的,但您不应使用 throw

对其进行测试

编辑 2:我应该早点注意到这一点,但您正在尝试使用 window.addEventListener 监听 DOM 错误事件。错误事件不会中断执行。异常(exception)情况。

将您的代码 throw new Error('sdasd'); 替换为以下代码:

var customEvent = new CustomEvent('error')

window.dispatchEvent(customEvent);

这应该可以解决您的问题。我用了the MDN page on custom events作为引用。

关于javascript - 从 firefox 捕获错误事件消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036165/

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