c# - 我无法捕捉到异常

标签 c# .net

我有这段代码:

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 中,在 Debug模式下,异常会被 Visual Studio 捕获(例如 DirectoryNotFoundException)。

最佳答案

问题是你在这里异步调用代码:

Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism }, currentFile =>
{
    DoWork(currentFile);
});

这会在单独的线程上进行调用,而不是在您的主线程上进行。

像这样使用 try & catch block :

Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism }, currentFile =>
{
    try
    { 
         DoWork(currentFile);
    }
    catch (Exception ex) { ... } 
});

关于c# - 我无法捕捉到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570391/

相关文章:

.net - 重写 DateTime.ToString 以使用 "o"而不是 "G"

c# - 如何旋转 WinRT Xaml Toolkit 柱形图的标签?

.net - 有没有办法使用 Roslyn 确定变量的潜在值?

c# - WinSCP SFTP 连接错误

c# - 获取 Entity Framework 中每个组的最后记录?

c# - 列出所有可能的组合

c# - 如何将多个字符串列表与分隔符组合

c# - 使用路由属性进行 Web API 版本控制时如何获取 Controller 名称

c# - 监控日志数据类架构

c# - 找不到适合指定文化或中性文化的任何资源