【发布时间】:2013-02-08 18:40:49
【问题描述】:
我在firefox下找不到捕捉错误信息的方法:
window.addEventListener("error", handleException, false);
...
function handleException(e) {
alert(e);
return false;
}
...
<script>
throw new Error('sdasd');
</script>
这很好地进入了handleException方法,但是e参数是firefox下的error event我不知道如何获取相关消息。
例如,在 chrome 中,我通过e.message 收到消息,因为在错误冒泡直到未被捕获后,在窗口级别触发了一个自动错误(参见this fiddle:最终错误是“未捕获”),其中包含我手动提出的原始错误。
所以为了在 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
}
所以我只打电话给err(..),而不是throw new Error(..)。这有效,至少对于用户定义的异常,这是我最关心的问题。在我的处理程序handleException 中,我正在咨询全局变量。
你知道我该怎么做吗?我对这个解决方案不满意。
谢谢你, S.
【问题讨论】:
-
e.message不适合你? -
显然 Firefox 缺少该属性。
-
@ExplosionPills 不,它没有,但在 chrome 下它可以
标签: javascript events firefox throw