Errore del compilatore CS1631

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile produrre un valore nel corpo di una clausola catch.
Cannot yield a value in the body of a catch clause

Non è possibile utilizzare l'istruzione yield dall'interno del corpo di una clausola catch. Per correggere l'errore, spostare l'istruzione yield all'esterno del corpo della clausola catch.

Il seguente codice di esempio genera l'errore CS1631:

// CS1631.cs
using System;
using System.Collections;

public class C : IEnumerable
{
   public IEnumerator GetEnumerator() 
   {
      try
      {
      }
      catch(Exception e)
      {
        yield return this;  // CS1631
      }
   }  

   public static void Main() 
   {
   }
}