Я знаком с созданием пользовательского объекта Error в JavaScript следующим образом.
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.