Я отримую деякі проблеми з переповненням стеку Javascript на стороні клієнта, особливо в браузері IE, це відбувається всередині сторонньої бібліотеки, яка здійснює деякі виклики функцій, і з якихось причин вони іноді гальмують в IE лише через низький ліміт стеку.
Потім я закодував невеликий тестовий HTML, щоб перевірити обмеження розміру стека для деяких браузерів і виявив, що IE8 насправді має невеликий ліміт стека в порівнянні з FF 7 або Chrome 14, що працюють на ноутбуці з ОС Windows 7, 8 Гб оперативної пам'яті:
<html>
<body>
<!-- begin Script: -->
<script type="text/javascript">
function doSomething(){
var i = 3200;
doSomethingElse(i);
}
function doSomethingElse(i){
if (i == 0) return -1;
doSomethingElse(i-1);
}
doSomething();
</script>
<!-- END OF PAGE -->
</body>
</html>
IE піднімає переповнення стека, коли значення складають близько 3200, Firefox і Chrome можуть обробляти дуже глибоку рекурсію в порівнянні з IE.
Я хотів би знати, чи є спосіб пов’язати виняток із переповнення стека з функцією Javascript, яка підняла його під час виконання в IE або будь-якому іншому браузері, і чи може вона дати стек-трас із ланцюжком функцій у стеку на момент, коли помилка була піднята.