Sonunda bu FİDET'in sona ereceğine dair makul kanıt sağlamak için, aşağıdaki oldukça anlamsız kodu sunuyoruz. Not: Java, en canlı hayal gücünün herhangi bir uzantısıyla benim dilim değil. Ben ise Peter cevabı desteklemek için, sadece bu kadar buyruğu soruya doğru cevap.
Bu, bir istifleme gerçekleşemediğinde ne olacağının koşullarını simüle etmeye çalışır çünkü bir yığın taşması oluşturur. Zor şey insanlar zaman çağırmak olmaz ki kavramak başarısız gibi geliyor bana olamaz olur.
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+")");
}
}
}
Bu küçük anlamsız goo yığınının çıktısı şudur ve yakalanan gerçek istisna bir sürpriz olabilir; Oh ve tamamen beklenen 32 deneme çağrısı (2 ^ 5):
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
maddenin işlenmesi sırasında atılan hatalar bir sonraki seviyeye yükselecektir. Ama nefesini tutma; atılan adım sayısı yaklaşık 2 ila (maksimum yığın derinliği) olacaktır ve istisnaların atılması da tam olarak ucuz değildir.