Quem nunca gerou um System.StackOverflowException que atire a primeira pedra.
O famoso StackOverflow acontece quando há uma chamada recursiva sem fim, causando um estouro de pilha de execução.
Se você gerou um StackOverflowException e não sabe a origem, procure por uma chamada onde um contador ou uma condição não encerrar o loop recursivo.
Abaixo tem 2 exemplos que geraram um StackOverflowException.
Chamada recursiva de um método sem uma condição para encerrar a chamada.
protected void Page_Load(object sender, EventArgs e)
{
gerarStackOverflowException();
}
private void gerarStackOverflowException()
{
gerarStackOverflowException();
}
Resultado:
An unhandled exception of type 'System.StackOverflowException' occurred in App_Web_so43wac4.dll
Get que chama o get, que chama o get... (clássico)
protected void Page_Load(object sender, EventArgs e)
{
string StackOverflowException = teste;
}
private string _teste;
public string teste
{
get { return teste; }
set { _teste = value; }
}
Resultado:
An unhandled exception of type 'System.StackOverflowException' occurred in App_Web_yvlzptt0.dll