por Cesar Cassiano Schimanco

An unhandled exception of type System.StackOverflowException occurred

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

Comentários

Carregando comentários

Postar um novo comentário



Processando...