我环顾四周,未能找到答案。
我要做的是打印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
}
答案 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
});