Вызов Directory.EnumerateFiles(..)
только установит перечислитель из-за отложенной оценки. Когда вы выполняете его, используя foreach
, вы можете вызвать исключение.
Поэтому вам нужно убедиться, что исключение обработано в нужном месте, чтобы перечисление могло продолжаться.
var files = from file in Directory.EnumerateFiles("c:\\",
"*.*", SearchOption.AllDirectories)
select new
{
File = file
};
foreach (var file in files)
{
try
{
Console.Writeline(file);
}
catch (UnauthorizedAccessException uEx)
{
Console.WriteLine(uEx.Message);
}
catch (PathTooLongException ptlEx)
{
Console.WriteLine(ptlEx.Message);
}
}
Обновление : в есть дополнительная информация