¿Por qué no puede aparecer el rendimiento del rendimiento dentro de un bloque de prueba con una captura?

Lo siguiente está bien:

try
{
    Console.WriteLine("Before");

    yield return 1;

    Console.WriteLine("After");
}
finally
{
    Console.WriteLine("Done");
}

losfinally&nbsp;el bloque se ejecuta cuando todo ha terminado de ejecutarse (IEnumerator<T>&nbsp;apoyaIDisposable&nbsp;para proporcionar una manera de garantizar esto incluso cuando la enumeración se abandona antes de que finalice).

Pero esto no está bien:

try
{
    Console.WriteLine("Before");

    yield return 1;  // error CS1626: Cannot yield a value in the body of a try block with a catch clause

    Console.WriteLine("After");
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

Supongamos (en aras del argumento) que una u otra de lasWriteLine&nbsp;llamadas dentro del bloque de prueba. ¿Cuál es el problema con continuar la ejecución encatch&nbsp;¿bloquear?

Por supuesto, la parte de retorno de rendimiento es (actualmente) incapaz de arrojar nada, pero ¿por qué debería eso evitar que tengamos un cerramiento?try/catch&nbsp;para hacer frente a las excepciones lanzadas antes o después de unyield return?

Actualizar:&nbsp;Hay uninteresante comentario de Eric Lippert aquí&nbsp;¡Parece que ya tienen suficientes problemas para implementar el comportamiento try / finalmente correctamente!

EDITAR: La página de MSDN en este error es:http://msdn.microsoft.com/en-us/library/cs1x15az.aspx. Sin embargo, no explica por qué.