Исключение StackOverflow происходит даже в управляемом коде, когда размер стека выполнения превышает размер стека. 2 Это происходит, например, в случае очень глубокой или неограниченной рекурсии. 2
Также переполнение стека может возникнуть, если приложение продолжает вызывать методы из внутри методов до тех пор, пока не закончится стек. 5 Ещё одна возможная причина — большое количество локальных переменных внутри метода. 5
Чтобы защититься от исключения StackOverflow, можно ограничить глубину рекурсии или использовать методы класса RuntimeHelpers, например, RuntimeHelpers.EnsureSufficientExecutionStack(). 1 Он проверяет, что на стеке достаточно места для выполнения средней функции .NET. 1
Если в приложении размещается среда CLR, можно указать, что среда должна выгрузить домен приложения, в котором возникает исключение переполнения стека, и позволить продолжить соответствующий процесс. 2