我正在使用节点4.2,并且正在捕获错误并在其上使用JSON.stringify。对于大多数对象,这很好用。但是,当抛出[TypeError:回调不是函数]时,它将返回一个空对象。如果我直接console.log它,它工作正常。
Mozilla的页面显示:
根据传统的转换语义,布尔值,数字和字符串对象在字符串化过程中将转换为相应的原始值。
try {
...
} catch (err) {
console.log('error: ' + JSON.stringify(err)) // outputs {}
}
在stringify
TypeError上使用时,您正在对没有enumerable
属性的对象进行字符串化。
所以如果你这样做
var typeError = new TypeError("hey")
for(var prop in typeError) {
console.log(prop) // this does not run
}
当您使用登录时console.log
,您正在使用valueOf
,因此
var typeError = new TypeError("hey")
typeError.valueOf() // TypeError: hey(…)
另外,错误知道如何将自己变成字符串,因此也可以这样做:
var typeError = new TypeError("hey")
typeError.toString() // "TypeError: hey"
如果要记录使用普通日志看不到的对象的属性,则可以使用console.dir
该对象。
在上执行操作时typeError
,您会看到它具有一个message
属性:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句