Javascript 我可以用原始堆栈和堆栈帧重新创建错误对象吗?

Javascript 我可以用原始堆栈和堆栈帧重新创建错误对象吗?,javascript,node.js,error-handling,sentry,winston,Javascript,Node.js,Error Handling,Sentry,Winston,我很熟悉用JavaScript创建一个类似这样的脚本 class CustomError extends Error { constructor(args) { super(...args); Error.captureStackTrace(this, CustomError); } } 但是,如果已经在别处抛出了一个异常/错误,我想创建一个新的错误对象,它是原始对象(包括堆栈)的克隆/副本 我的背景是,我正在使用日志报告器,例如,捕获事件,我想将错误消息发布到Sen

我很熟悉用JavaScript创建一个类似这样的脚本

class CustomError extends Error {
  constructor(args) {
    super(...args);
    Error.captureStackTrace(this, CustomError);
  }
}

但是,如果已经在别处抛出了一个异常/错误,我想创建一个新的错误对象,它是原始对象(包括堆栈)的克隆/副本

我的背景是,我正在使用日志报告器,例如,捕获事件,我想将错误消息发布到Sentry。哨兵提供了这样一种方式-

try {
    aFunctionThatMightFail();
} catch (err) {
    Sentry.captureException(err);
}
但问题是,Sentry假设捕捉错误的地方就是抛出错误的地方

Sentry的一个好处是,它可以报告应用程序中发生错误的行号,但由于我正在聚合日志,原始错误的堆栈帧已丢失。我可以保存可以发送到Sentry的其他元数据,但它仍然突出显示了带有
Sentry.captureException
的行,作为调用Winston的错误和堆栈帧的来源


Sentry SDK从传递给
captureException
Error
对象组装JSON负载。我认为您只需要直接组装该负载,并使用
captureEvent
发送它。有关更多信息,请参阅。

什么是
错误。captureStackTrace
?这听起来真像一个XYproblem@JonasWilms
错误。captureStackTrace
来自我链接到的MDN文档。我试图避免它成为XY问题描述。
全局错误对象不包含自己的方法
。。。你的文件linked@JonasWilms页面底部附近有一个代码示例。我也不知道captureStackTrace——它不是标准规范的一部分