如何在Internet Explorer中获取javascript堆栈跟踪。 e.stack返回“Undefined”

时间:2013-11-05 08:57:43

标签: javascript internet-explorer exception exception-handling stack-trace

我尝试了以下代码

try {
  alertt("dddd");
} catch (e) {
    console.log(e.stack);
}

它会在Google Chrome和Mozilla Firefox中产生堆栈跟踪。但它在Internet Explorer中返回 undefined

是否有任何方法可以在Internet Explorer中获取堆栈跟踪?

3 个答案:

答案 0 :(得分:1)

您的代码肯定适用于IE11;我刚尝试过。我相信它至少也应该适用于IE10。

您可能也对console.trace感兴趣,它会为您提供堆栈跟踪。这在IE11中肯定是新的,但这只是升级的另一个好理由 - IE11中的开发工具比以前好几个数量级。

答案 1 :(得分:-2)

您可以使用MSDN文档中提到的e.description

答案 2 :(得分:-2)

语法:

errorObj = new Error()
errorObj = new Error([number])
errorObj = new Error([number[, description]])

参数说明:

errorObj

Required. The variable name to which the Error object is assigned. The variable assignment is omitted when you create the error using a throw statement.

Optional. Numeric value assigned to an error. Zero if omitted.

描述

Optional. Brief string that describes an error. Empty string if omitted.

实施例

function checkInput(x) {
    try
    {
        if (isNaN(parseInt(x))) {
            throw new Error("Input is not a number.");
        }
    }
    catch(e)
    {
        document.write(e.description);
    }
}

checkInput("not a number");

注意:每当发生运行时错误时,都会创建一个Error对象的实例来描述错误。此实例具有两个内部属性,其中包含error (description property)error number (number property)的说明。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ie/1dk3k160%28v=vs.94%29.aspx

错误号是32位值。高16位字是设施代码,而低字是实际的错误代码。