TL, TR
Когда я задал вопрос, я предположил, что StackOverflowException
является
механизм для предотвращения бесконечного запуска приложений. Это неверно.
A StackOverflowException
не обнаружен.
Он бросается, когда
стек не имеет возможности выделять больше памяти.
[Оригинальный вопрос:]
Это общий вопрос, который может иметь разные ответы на каждый язык программирования.
Я не уверен, что языки, отличные от С#, обрабатывают переполнение стека.
Сегодня я переживал исключения и думал о том, как можно обнаружить StackOverflowException
. Я считаю, что нельзя сказать f.e. если стек имеет глубину 1000 вызовов, а затем генерирует исключение. Потому что, возможно, в некоторых случаях правильная логика будет такой глубокой.
Какова логика обнаружения бесконечного цикла в моей программе?
StackOverflowException
класс:
https://msdn.microsoft.com/de-de/library/system.stackoverflowexception%28v=vs.110%29.aspx
Перекрестная ссылка, упомянутая в документации класса StackOverflowException
:
https://msdn.microsoft.com/de-de/library/system.reflection.emit.opcodes.localloc(v=vs.110).aspx
Я добавил тэг stack-overflow
к этому вопросу, и в описании говорится, что он бросается, когда стек вызовов потребляет слишком много памяти. Означает ли это, что стек вызовов - это какой-то путь к текущей исполняемой позиции моей программы, и если он не может хранить больше информации о пути, то генерируется исключение?