В то время как go я использовал Verror от joyent, чтобы не потерять трассировку стека при повторном отбрасывании, я только что провел тест с узлом v12 без Verror, и трассировка стека, кажется, сохраняется без использования ошибки.
Затем я посмотрел на использование Error.captureStackTrace, в нем говорится, что использовать это в ваших ошибках, чтобы ошибка не была добавлена в стек.
Я не то, что я делаю неправильно, но с или без Error.captureStackTrace - трассировка стека одинакова ..
Я хотел бы знать текущее состояние использования captureStackTrace, поскольку я не вижу разницы :-), а также использование Ошибка, которая больше не нужна.
В документации говорится, что .stack недоступен без вызова captureStackTrace, но я вижу его доступным каждый раз, с или без captureStackTrace
вот пример 2 x ошибок
class MyErrorOne extends Error {
constructor(message) {
super(message);
Error.captureStackTrace(this, this.constructor);
}
}
class MyErrorTwo extends Error {
constructor(message) {
super(message);
Error.captureStackTrace(this, this.constructor);
}
}
Я попробовал их, закомментировав captureStackTrace в EACH error и stackt раса такая же.
Кто-нибудь может помочь?
Вот мой код для проверки вызова ошибок
const DoOne = () => {
try {
console.log("executing do one");
DoTwo();
} catch (error) {
console.log("error in DoOne", error);
console.log("here is the stack ", error.stack);
throw new MyErrorOne("threw error from doone in myerrorone");
// throw error;
}
};
const DoTwo = () => {
try {
console.log("executing do two");
throw new MyErrorTwo("threw error from dotwo in myerrortwo");
} catch (error) {
console.log("error in DoTwo", error);
throw error;
}
};
DoOne();