ในความพยายามที่จะให้หลักฐานที่สมเหตุสมผลว่าในที่สุด WILL นี้จะยุติฉันขอเสนอรหัสที่ไม่มีความหมายต่อไปนี้ หมายเหตุ: Java ไม่ใช่ภาษาของฉันด้วยจินตนาการที่สดใสที่สุด ผมเสนอนี้ขึ้นเพื่อสนับสนุนคำตอบของปีเตอร์ซึ่งเป็นตอบที่ถูกต้องกับคำถาม
ความพยายามที่จะจำลองเงื่อนไขของสิ่งที่เกิดขึ้นเมื่อการเรียกไม่สามารถเกิดขึ้นได้เพราะมันจะแนะนำกองล้น สำหรับฉันแล้วสิ่งที่ยากที่สุดที่ผู้คนไม่สามารถเข้าใจได้ในสิ่งที่การเรียกนั้นไม่เกิดขึ้นเมื่อมันไม่สามารถเกิดขึ้นได้
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+")");
        }
    }
}
การส่งออกของกองหนาไม่มีจุดหมายของสารที่หนานี้มีดังต่อไปนี้และข้อยกเว้นที่เกิดขึ้นจริงอาจเป็นเรื่องแปลกใจ โอ้และลองโทร 32 ครั้ง (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คำสั่งจะเผยแพร่ไปยังระดับถัดไปขึ้นไป แต่อย่ากลั้นลมหายใจของคุณ จำนวนขั้นตอนที่ดำเนินการจะอยู่ที่ประมาณ 2 ถึง (ความลึกสูงสุดของสแต็ก) และการโยนข้อยกเว้นไม่ได้ราคาถูกเช่นกัน