是否可以使用原始堆栈和堆栈帧重新创建错误对象?

彼得

我熟悉这样在JavaScript中创建自定义Error对象的过程

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

但是,鉴于已经在其他地方抛出的异常/错误,我想创建一个新的错误对象,该对象是包括堆栈在内的原始对象的克隆/副本。

我的情况是我正在使用日志报告程序(例如Winston)捕获事件,并且我想将错误消息发布到Sentry。Sentry提供了一种捕获此类异常的方法-

try {
    aFunctionThatMightFail();
} catch (err) {
    Sentry.captureException(err);
}

但问题在于,Sentry假定捕获错误的位置就是引发错误的位置。

Sentry的好处之一是它可以报告应用程序中发生错误的位置的行号,但是由于我正在汇总日志,因此原始错误的堆栈帧已丢失。我可以保存其他可以发送给Sentry的元数据,但仍会突出显示该行,Sentry.captureException并将其作为错误的起因以及调用Winston的堆栈帧。

在此处输入图片说明

马库斯·温特瓦迪泽(Markus Unterwaditzer)

Sentry SDK从Error传递给对象中组装JSON有效负载captureException我认为您只想直接组装该有效负载并使用发送即可captureEvent有关更多信息,请参见https://docs.sentry.io/development/sdk-dev/attributes/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用堆栈实现撤消和重做功能。如何编辑堆栈而无需在Haskell中重新创建堆栈

是否可以使用相同的容器ID重新创建或重新部署Docker容器?

AWS CloudFormation:是否可以更新堆栈以重新创建数据库资源而不会丢失数据

是否可以使用CloudFormation重新创建AWS资源?

requestPermission()不能完全重新创建活动堆栈

在导航堆栈中重新创建viewController

是否可以仅使用CSS重新创建字幕?

是否可以在macOS中使用给定的homedir和UID重新创建丢失的帐户?

是否可以仅通过使用glBlendEquation和glBlendFunc重新创建无混合模式?

每帧重新创建FBO(帧缓冲对象)

在新创建的类上出现堆栈溢出错误

是否可以使用Cereal重新创建Protobuf的反序列化功能之一?

是否可以使用我的旧keyotre详细信息重新创建新的Android密钥库?

删除了Cloudformation堆栈,由于已有资源,现在无法重新创建新的堆栈

可以使用元数据,SHA和几个字节来重新创建文件?

在作为指针注入到类后重新创建堆栈对象是不是很糟糕?

dart:是否可以缓存或重新创建在重复函数中创建的对象?

是否可以在 close() 之后重新创建 Java BufferedReader 对象

当活动处于历史记录堆栈顶部时,PendingIntent不重新创建活动(使用Extras)

是否可以忽略git中的文件重新创建?

是否可以重新创建.meteor目录?

是否可以从javascript重新创建选择?

是否可以强制JVM在堆栈以外的堆栈中创建对象?

在弹出后退堆栈后重新创建RecyclerView时,应该记住它的位置吗?

清除导航返回堆栈并重新创建活动

AWS-回滚/重新创建DELETE_COMPLETE云形成堆栈

强制堆栈重新创建自定义小部件

重新创建为对象和类PHP

使用React删除和重新创建元素