Получение ссылки на исключение в блоке finally в итераторе

Есть ли способ получить ссылку на исключение внутри блока finally в функции или свойстве итератора , которые позволяют try..finally, но не try..catch ?

I Я не собираюсь использовать это, чтобы изменить или связать с потоком управления, но хотел бы иметь возможность получить ссылку на исключение в блоке finally в любом случае (если оно было выброшено), чтобы прочитать из него и, возможно, добавить материал для члена данных .

Я понимаю, что из-за природы классов, сгенерированных компилятором из итераторов, это, вероятно, не возможно / не разрешено по той же причине, почему try..catch вокруг оператора yield не допускается в первую очередь. Но я все еще надеюсь, что, возможно, найдется какой-то способ (или даже уродливый трюк), чтобы в любом случае воспользоваться этим исключением.

Упрощенный пример:

IEnumerable Something
get
{
  try
  {
    throw new SomeException();
    yield return new SomeClass();
  }
  finally
  {
    Exception ex = ... // <= TODO - get hold of the exception here [if one was thrown]...
  }
}

8
задан KristoferA 17 January 2011 в 07:31
поделиться