JavaScript Promise链中打印Error对象异常问题咨询
解决Promise链中Error对象无法以可折叠格式打印的问题
这个问题我之前调试时也碰到过!本质是Chrome DevTools对Error对象的默认打印逻辑导致的:当你用console.log()直接打印Error时,它会自动调用Error的toString()方法,只输出错误描述和堆栈信息,不会展示你附加的details这类自定义属性。下面给你几个实用的解决方案:
用
console.dir()替代console.log()console.dir()是专门用来展示对象完整结构的方法,会以可折叠的树状形式呈现所有属性(包括你自定义的details):.somePartOfThePromiseChain .catch(err => { console.log("ERROR"); console.dir(err); // 替换成dir即可查看完整对象 debugger; throw err; });把Error包裹在普通对象里打印
如果你更习惯用console.log(),可以把Error放到一个普通对象中,这样DevTools会把它当作常规对象处理,允许你展开查看所有成员:.somePartOfThePromiseChain .catch(err => { console.log("ERROR"); console.log({ err }); // 用对象包裹Error debugger; throw err; });利用debugger断点直接查看变量
你已经加了debugger语句,当代码停在断点时,直接在DevTools控制台输入err并回车,就能看到完整的Error对象结构,包括你的details属性——这种方式在调试时其实是最直观的。
放心,你附加的details属性一直都在Error对象上,只是console.log()的默认输出形式把它隐藏了,上面的方法都能帮你轻松查看这些自定义内容。
内容的提问来源于stack exchange,提问作者Return-1
相关产品推荐
相关产品推荐

