You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:08:31