Java · Essencial · Inglês · Técnico
StackOverflowError
Erro lançado quando a pilha de uma thread estoura, em geral por recursão sem condição de parada ou profunda demais.
Onde usar
Aparece em recursões infinitas e em grafos de objetos com toString ou equals circulares, em que um objeto chama o outro sem fim.
Em código
int contar(int n) {
return contar(n + 1); // sem parada
}
contar(0); // StackOverflowError
// aumentar a pilha: java -Xss4m appExemplos
The recursion has no base case, so we get a StackOverflowError.
A recursão não tem caso base, então dá StackOverflowError.
Two toString methods calling each other caused a StackOverflowError.
Dois toString chamando um ao outro causaram um StackOverflowError.
Cuidado
É um Error, não uma Exception; capturá-lo para seguir em frente raramente é seguro. Corrija a recursão.