2015-10-08 3 views
1

Я пытаюсь заставить переполнение стека с этим кодом:Узел не бросает исключение переполнения стека

// Throws stack overflow exception 

var count = 0; 

try { 
    (function curse() { 
     console.log(count++); 
     curse(); 
    })(); 
} catch (e) { 
    console.log('ERROR'); 
    console.log(e.message); 
} 

Однако, когда я запускаю его, он печатает цифры на экране, а затем завершает работу корректно. Никаких исключений не было, я могу удалить try-catch, и все равно исключение не выводится на консоль.

Почему я не получаю сообщение об исключении, сбрасываемое на консоль?

Узел версии v0.12.2, V8 is 3.28.73.

+0

Вы имеете в виду 'проклятие()'? Он называется, и целые числа распечатываются на экране, как я ожидал. Он просто заканчивается и выходит. – BanksySan

+0

Это происходит, когда я запускаю его в jsfiddle - предоставляем больше информации (в чем работает js?) – MaineCoder

+0

печатает, что на экране, и бесконечный поток чисел? какая версия node.js? –

ответ

1

Если вы обновляетесь до последнего node.js (в настоящее время v4.1.2), вы, вероятно, сможете увидеть сообщение об исключении, сбрасываемое на консоль. Кажется, это была ошибка в более старых версиях node.js.

Кроме того, в вашей текущей версии node.js, если вы извлекли оператор console.log(count++);, возможно, вы смогли увидеть сообщение об исключении. По крайней мере, это сработало для меня с v0.10.26.

+0

Я не знаю, как у меня был такой старый узел. Тем не менее, я обновил его. – BanksySan

+0

Удаление 'console.log' сделал трюк. Ты знаешь почему? – BanksySan

+0

Я не знаю почему. – cybersam

Смежные вопросы