我有這樣一段代碼:我無法捕捉異常
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
)。
您必須在foreach中添加try/catch。看到這個[MSDN文章(http://msdn.microsoft.com/en-us/library/dd460695%28v=vs.110%29.aspx) –
你也可以調用'EnumerateFiles'的LINQ表達和包裝之前請嘗試/趕上。 – helrich
假設在並行循環中,一個文件拋出異常,另一個拋出異常。如何處理單個try-catch塊中的兩個「並行」異常? –