Я пытаюсь использовать рекурсивный встроенный в методе:Выход внутри Try блока
public IEnumerable<string> Foo(string path)
{
try
{
foreach (string file in Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories))
{
yield return file;
}
}
catch (Exception)
{ }
}
И получил эту ошибку:
Cannot yield a value in the body of a try block with a catch clause
Как я могу использовать try-catch
для того, чтобы избежать меня метод врезаться У меня нет разрешения на папку?
Этот фрагмент кода не имеет большого смысла. Что вы хотите сделать, если поймаете исключение? В конце концов, блок исключений * является * логикой метода, иначе вы могли бы просто вызвать Directory.EnumerateFiles в своей программе напрямую. – nvoigt
Из [Ошибка компилятора CS1626] (http://msdn.microsoft.com/en-us/library/cs1x15az (v = vs.90) .aspx) 'Оператор yield не разрешен в блоке try, если есть catch, связанное с блоком try. Чтобы избежать этой ошибки, переместите оператор yield из предложения catch. «Конечно, это не полностью отвечает на ваш вопрос. –
Вы имеете в виду просто поместить Directory.EnumerateFiles (путь, "*. *", SearchOption.AllDirectories) внутри foreach и внутри Try? – user2214609