GetFiles访问被拒绝异常

时间:2016-10-30 19:23:58

标签: c#

我正在尝试以递归方式浏览目录并使用GetFiles返回该目录中所有文件的列表。到目前为止,这是我的代码:

public string[] passFiles(string location)
        {
            string[] files;
            try
            {
                files = Directory.GetFiles(location);
                return files;
            }
            catch (UnauthorizedAccessException)
            {
                // Code here will be hit if access is denied.
                throw;
            }
        }

但它仍然给我一个Access Denied错误。当我试图将catch部分留空时,它表示所有路径都必须返回一些内容,这就是我放置throw语句的原因。关于为什么这不是忽略错误并继续下一个错误的任何想法?

2 个答案:

答案 0 :(得分:2)

当发生异常并且您捕获异常时,仍然需要返回该函数的结果。初始化变量文件以包含一个空数组,然后在try-catch-block之后返回它,因此即使发生错误,也始终返回它。

public string[] passFiles(string location)
{
    // Create an empty array that will be returned in case something goes wrong
    string[] files = new string[0];
    try
    {
        files = Directory.GetFiles(location);
    }
    catch (UnauthorizedAccessException)
    {
        // Code here will be hit if access is denied.
    }

    return files;
}

另请参阅this question以获取类似问题和一些有用的答案。

答案 1 :(得分:0)

在捕获异常的情况下,您需要返回一些内容。

即。也许在方法结束时返回null - 并记住在调用代码中检查它。