У меня есть этот кусок кода:я не могу поймать исключение
try
{
var files = from folder in paths
from file in Directory.EnumerateFiles(path, pattern, searchOption)
select new Foo() { folder = folder, fileName = file };
Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism }, currentFile =>
{
DoWork(currentFile);
});
}
catch (Exception ex)
{
}
Когда у меня есть исключение в Directory.EnumerateFiles
, я не могу поймать это исключение в этом фрагменте кода. Исключением является метод, вызывающий этот фрагмент.
Из Visual Studio в режиме отладки исключение попадает в Visual Studio (например, DirectoryNotFoundException
).
Вы должны добавить try/catch внутри foreach. См. Эту статью [MSDN] (http://msdn.microsoft.com/en-us/library/dd460695%28v=vs.110%29.aspx) –
Вы также можете вызвать 'EnumerateFiles' перед выражением LINQ и обернуть это позвоните в try/catch. – helrich
Предположим, что в параллельном цикле один файл генерирует исключение, а другой - его собственный. Как вы можете иметь дело с двумя «параллельными» исключениями в одном блоке try-catch? –