我熟悉用JavaScript这样创建custom Error object。
class CustomError extends Error {
constructor(args) {
super(...args);
Error.captureStackTrace(this, CustomError);
}
}
但是鉴于已经在其他地方抛出的异常/错误,我想创建一个新的错误对象,该对象是包括堆栈在内的原始对象的副本/副本。
我的情况是我正在使用日志报告器,例如Winston,以捕获事件,我想向Sentry发布错误消息。哨兵提供了一种capture exceptions的方式-
try {
aFunctionThatMightFail();
} catch (err) {
Sentry.captureException(err);
}
问题是,Sentry假定捕获错误的位置就是引发错误的位置。
Sentry的好处之一是它可以报告应用程序中发生错误的位置的行号,但是由于我正在聚合日志,因此原始错误的堆栈帧已丢失。我可以保存其他可以发送给Sentry的元数据,但是它仍然突出显示以Sentry.captureException
作为错误源以及调用Winston的堆栈帧的行。
答案 0 :(得分:1)
Sentry SDK从传递给Error
的{{1}}对象中组装一个JSON有效负载。我认为您只想直接组装该有效负载并使用captureException
发送即可。有关更多信息,请参见https://docs.sentry.io/development/sdk-dev/attributes/。