我正在尝试以递归方式浏览目录并使用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
语句的原因。关于为什么这不是忽略错误并继续下一个错误的任何想法?
答案 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 - 并记住在调用代码中检查它。