Молчание некоторые "помощники" функционируют из трассировки стекаJavascript

Форум по Javascript
Anonymous
Молчание некоторые "помощники" функционируют из трассировки стека

Сообщение Anonymous »

Я работаю над некоторыми алгоритмами, которые исследуют дерево (через рекурсию), чтобы осмотреть и преобразовать его. Я использую ряд вспомогательных функций для повторения: они проверяют входные и выходные данные, журналы, обрабатывают некоторые исключения и т. Д. И т. Д. На стеке трассировку, чтобы выяснить, что происходит, и исправить это. Однако трассировка стека загрязнена этими помощником рекурсии. Загрязнение < /em>: < /p>

Код: Выделить всё

function sum(list) {
if (list.length===0) { throw new Error("not yet implemented"); }
const [head, ...tail] = list;
return helper1(()=>{
return head + sum(tail);
});
}

function helper1(f) {
try {
return helper2(f);
} catch(e) {
// here I'm supposed to try to handle the error
throw e;
}
}

function helper2(f) {
// here I'm supposed to increase indentation for loged messages...
const r = f();
// ...and now decrease it
return r;
}

try {
console.log(sum([7, 2, 3, 8]));
} catch(e) {
console.error(e.stack);
}


Для каждого рекурсивного вызова для sum , трасса Steck содержит Дополнительные вызовы Helper1 , helper2 и закрытие, переданное Helper1 по sum . В случае моей программы у меня есть 8 из этих функций, загрязняющих трассировку стека для каждого рекурсивного шага. /п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... tack-trace

Вернуться в «Javascript»