Throwing an anonymous exception inside recursive function
===

After the couple of seconds, the following program outputs 

> Process is terminated due to StackOverflowException

instead of my message. Why?


 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Numerics;
    
    namespace maximumVariable
    {
        class Program
        {
    
            public static BigInteger Factorial(int num)
            {
                try
                {
                    return (num > 1) ? Factorial(num - 1) : (1);
                }
                catch
                {
                    throw;
                }
            }
    
    
            static void Main(string[] args)
            {
                BigInteger kingKong=0;
                int facParameter=0;
                try
                {
    
                    while (true)
                    {
                        kingKong = Factorial(facParameter);
                        facParameter++;
                    }
    
                }
                catch
                {
                    Console.WriteLine("The maximum value " + kingKong.ToString()+"has been achieved after "+facParameter.ToString()+" iterations");
                }
    
    
            }
        }
    }
    



