Em um esforço para fornecer evidências razoáveis de que isso acabará eventualmente, ofereço o seguinte código bastante sem sentido. Nota: Java NÃO é minha linguagem, por qualquer trecho da imaginação mais vívida. Eu ofereço isso apenas para apoiar a resposta de Peter, que é a resposta correta para a pergunta.
Isso tenta simular as condições do que acontece quando uma chamada NÃO pode acontecer porque introduziria um estouro de pilha. Parece-me a coisa mais difícil que as pessoas não conseguem entender, pois a invocação não acontece quando não pode acontecer.
public class Main
{
public static void main(String[] args)
{
try
{ // invoke foo() with a simulated call depth
Main.foo(1,5);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}
public static void foo(int n, int limit) throws Exception
{
try
{ // simulate a depth limited call stack
System.out.println(n + " - Try");
if (n < limit)
foo(n+1,limit);
else
throw new Exception("StackOverflow@try("+n+")");
}
finally
{
System.out.println(n + " - Finally");
if (n < limit)
foo(n+1,limit);
else
throw new Exception("StackOverflow@finally("+n+")");
}
}
}
A saída dessa pequena pilha inútil de gosma é a seguinte, e a exceção real capturada pode ser uma surpresa; Ah, e 32 tentativas (2 ^ 5), o que é totalmente esperado:
1 - Try
2 - Try
3 - Try
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
3 - Finally
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
2 - Finally
3 - Try
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
3 - Finally
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
1 - Finally
2 - Try
3 - Try
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
3 - Finally
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
2 - Finally
3 - Try
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
3 - Finally
4 - Try
5 - Try
5 - Finally
4 - Finally
5 - Try
5 - Finally
java.lang.Exception: StackOverflow@finally(5)
finally
cláusula serão propagados para o próximo nível. Mas não prenda a respiração; o número de etapas executadas será de cerca de 2 à (profundidade máxima da pilha) e o lançamento de exceções também não é exatamente barato.