如何在Javascript中枚举错误对象?

时间:2014-05-12 14:02:59

标签: javascript

我环顾四周,未能找到答案。

我要做的是打印Error对象中可用的所有属性以进行错误报告。这可能是不可能的,但我至少想知道原因。

我在Ubuntu 12.04上的Chrome和Firefox中尝试了以下内容。

try {
   throw new Error('Foo');
} catch (x) {
   console.log(Object.keys(x)); // []
   for (var i in x) console.log(i); // Prints nothing
}

1 个答案:

答案 0 :(得分:3)

错误对象键的可枚举性因浏览器而异。您最好的选择是使用Object.getOwnPropertyNames

var props = Object.getOwnPropertyNames(x);
console.log(props);
for (var i=0; i<props.length; i++) console.log(x[props[i]]);
  

我需要将某些内容发送回服务器以进行错误报告。

我明确地命名我感兴趣的属性,例如:

reportErrorBack( JSON.stringify({
    name: e.name, // on the Error.prototype
    message: e.message,
    stack: e.stacktrace
});