【发布时间】:2019-09-19 23:20:59
【问题描述】:
我熟悉像这样在 JavaScript 中创建 custom Error object。
class CustomError extends Error {
constructor(args) {
super(...args);
Error.captureStackTrace(this, CustomError);
}
}
但是考虑到已经在其他地方抛出的异常/错误,我想创建一个新的错误对象,它是原始的克隆/副本,包括堆栈。
我的上下文是我正在使用日志报告器,例如Winston,用于捕获事件,我想将错误消息发布到 Sentry。 Sentry 提供了一种像这样capture exceptions 的方法 -
try {
aFunctionThatMightFail();
} catch (err) {
Sentry.captureException(err);
}
但问题在于,Sentry 假定捕获错误的位置就是引发错误的位置。
Sentry 的一个好处是它可以报告应用程序中发生错误的行号,但是因为我正在汇总日志,所以原始错误中的堆栈帧已经丢失。我可以保存可以发送到 Sentry 的其他元数据,但它仍然突出显示以 Sentry.captureException 作为错误来源的行以及调用 Winston 的堆栈帧。
【问题讨论】:
-
Error.captureStackTrace是什么?这听起来确实像一个 XY 问题 -
@JonasWilms
Error.captureStackTrace来自我链接到的 MDN 文档。我试图避免它成为 XY 问题描述。 -
The global Error object contains no methods of its own...您链接的文档 -
@JonasWilms 在页面底部附近有一个代码示例。我也不知道
captureStackTrace- 它不是标准规范的一部分developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript node.js error-handling sentry winston