¿Cuál es el propósito de "finalmente" en probar / atrapar / finalmente

La sintaxis cambiará de un idioma a otro, pero esta es una pregunta general.

¿Cuál es la diferencia entre esto ....

try
{
     Console.WriteLine("Executing the try statement.");
     throw new NullReferenceException();
}
catch (NullReferenceException e)
{
     Console.WriteLine("{0} Caught exception #1.", e);
}       
finally
{
     Console.WriteLine("Executing finally block.");
}

y esto....

try
{
    Console.WriteLine("Executing the try statement.");
    throw new NullReferenceException();
}
catch (NullReferenceException e)
{
    Console.WriteLine("{0} Caught exception #1.", e);
}        
Console.WriteLine("Executing finally block.");

Sigo viendo que se usa, así que asumo que hay una buena razón para usarlo finalmente, pero no puedo entender en qué se diferencia del hecho de poner un código después de la instrucción, ya que aún se ejecutará.

¿Hay alguna vez un escenario donde finalmente no se ejecuta?

Respuestas a la pregunta(10)

Su respuesta a la pregunta