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 对象并在调试时查看其成员。正如您可以想象的那样,这与我重新抛出错误无关。
非常感谢。
console.dir(MDN、Chrome 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)