首页 > 解决方案 > C#:尝试 foreach 捕获继续

问题描述

我正在迭代一个IEnumerableEnumerateFileSystemEntries哪里获取下一个元素的行为可能会引发访问被拒绝异常。所以我尝试将它包装起来,但我不想仅仅因为中间的一个元素不好就停止迭代。在坏的元素之后,还有更多的元素是好的。所以我continue在我的捕获中放了一个,但那是无效的。有没有办法做我在这里没有做的事情?

paths = Directory.EnumerateFileSystemEntries(RootDirectory, SearchPattern, SearchOption);
try
{
    foreach (var path in paths)
    {
        // Do something with the paths
    }
} catch (Exception ex)
{
    Debug.Print(ex.Message);
    continue;    // ERROR: "No enclosing loop out of which to break or continue"
}

我已经阅读了 3 个重复帖子中的每个答案。他们都遭受同样的问题。我见过的唯一解决方案是将我的应用程序移植到 .NET 核心,这是一个漫长的过程:https ://docs.microsoft.com/en-us/dotnet/core/porting/

如果您来这里是为了寻找基于 FrameWork 的解决方案,请放弃所有希望。这里没有人会帮助你。如果您确实提出了一个好的答案,您甚至无法添加它,因为所有其他帖子都接受了有缺陷的解决方案。

标签: c#.net-framework-4.8

解决方案


推荐阅读