在 javascript 中打印错误对象

Ret*_*n-1 8 javascript error-handling

当在我的 Promise 链中抛出 Error 对象时,我会为其附加一个“详细信息”属性,以便处理程序可以知道在最终的 catch 块中如何处理它。

如果启用了日志记录,我在链的一部分中所做的就是记录错误,然后像这样重新抛出它:

.somePartOfThePromiseChain
.catch(err => {
            console.log("ERROR");
            console.log(err.details);
            debugger;
            throw err;
          });
Run Code Online (Sandbox Code Playgroud)

但是,这工作得很好,如果我想打印整个错误,我不会按预期得到一个对象,但看起来会有所不同,如下所示:

Error: My error description here
    at API.js:105
    at <anonymous>
Run Code Online (Sandbox Code Playgroud)

虽然我期待着 Chrome 开发工具中通常的可折叠对象格式。

我不确定为什么会发生这种情况,因为我本质上只想打印 Error 对象并在调试时查看其成员。正如您可以想象的那样,这与我重新抛出错误无关。

非常感谢。

T.J*_*der 7

console.dirMDNChrome devtools 文档)在大多数控制台上都会这样做:

try {
  const e = new Error();
  e.details = "details go here";
  throw e;
} catch (ex) {
  console.dir(ex);
}
Run Code Online (Sandbox Code Playgroud)
(Look in the real console.)
Run Code Online (Sandbox Code Playgroud)


Sin*_*nan 5

尝试将其包装在另一个对象中。

就像是:

console.log( {error} );
Run Code Online (Sandbox Code Playgroud)