В .NET 4.0 есть хороший новый метод для получения файлов в каталоге потоковым способом через перечисление.
Проблема заключается в том, что если вы хотите перечислить все файлы, вы можете заранее не знать, какие файлы или папки защищены доступом, и может вызывать исключение UnauthorizedAccessException.
Чтобы воспроизвести, можно просто запустить этот фрагмент:
foreach (var file in Directory.EnumerateFiles(@"c:\", "*", SearchOption.AllDirectories))
{
// whatever
}
До того, как этот метод .NET существовал, удалось добиться примерно такого же эффекта, реализовав рекурсивный итератор в методах возвращаемых строк. Но это не так лениво, как новый .NET-метод.
Так что делать? Может ли UnauthorizedAccessException быть подавленным или является фактом жизни при использовании этого метода?
Мне кажется, что метод должен иметь перегруз, принимающий действие для устранения каких-либо исключений.