在一个使用 Typescript 并且目标为 ES2020 的 Node.js 项目中,我正在使用自定义 Error 类如下所示:
class InvalidParamsError extends Error {
}
try {
throw new InvalidParamsError();
} catch (error) {
if (error instanceof Error) {
console.log(error);
console.log(error.message); // Different output
console.log(error.stack); // Different output
console.log(error.toString()); // Different output
}
}
我在控制台中得到的输出是:
InvalidParamsError
at REPL11:2:13
at ...
Error
at REPL11:2:13
at ...
Error
undefined
如何将此输出作为字符串获取,而无需将其打印到控制台?
error.message
、error.stack
和 error.toString()
都返回不同的字符串,而且没有一个显示 InvalidParamsError
作为输出的一部分,而是显示一个通用的 Error
。我知道我可以通过在构造函数中手动设置 InvalidParamsError
的 name
来修复这个问题,但即使这样,我也无法像字符串一样精确地获得与 console.log(error)
相同的输出。
我尝试查看 Node.js 的控制台源代码,但找不到任何答案。
我正在针对 ES2020,因此我认为这与 扩展内置类型(如 Error)时出现的先前 TypeScript 问题无关。
error.toString()
? - undefinederror.toString()
的输出文本中并不包含InvalidParamsError
,我已经尝试过了。而且,在Error
类型中并不存在属性'type'。 - undefined