UnauthorizedAccessException

UnauthorizedAccessException

我正在使用下面的LINQ查询来获取目录列表。我收到错误消息(用户代码未处理System.UnauthorizedAccessException)。如何仅加载我有权访问的目录。

var files = from f in System.IO.Directory.GetDirectories(@"\\testnetwork\abc$",
                                   "*.*",
                                   SearchOption.AllDirectories)
            select System.IO.Path.GetDirectoryName(f);


错误:

拒绝访问路径“ \ testnetwork \ abc $ \ DemoFolder \”。

最佳答案

使用Catch捕获UnauthorizedAccessException。 。

  string[] directories = Directory.EnumerateDirectories(@"\\testnetwork\abc$","*.*", SearchOption.AllDirectories).Catch(typeof(UnauthorizedAccessException)).ToArray();


ExceptionExtensions:

   static class ExceptionExtensions
{
public static IEnumerable<TIn> Catch<TIn>(
            this IEnumerable<TIn> source,
            Type exceptionType)
{
    using (var e = source.GetEnumerator())
    while (true)
    {
        var ok = false;

        try
        {
            ok = e.MoveNext();
        }
        catch(Exception ex)
        {
            if (ex.GetType() != exceptionType)
                throw;
            continue;
        }

        if (!ok)
            yield break;

        yield return e.Current;
    }
}
}

关于c# - LINQ中的C#处理System.UnauthorizedAccessException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12373529/

10-10 07:22