捕获访问路径异常后继续搜索
本文关键字:继续 搜索 异常 路径 访问 | 更新日期: 2023-09-27 18:28:32
这是我从给定路径搜索文件的函数:
static void dirSearch(string dir)
{
try
{
foreach (string item in Directory.GetDirectories(dir))
{
Console.WriteLine(item);
foreach (string str in Directory.GetFiles(item))
{
Console.WriteLine("'t" + str);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
为什么在捕捉到异常后,函数会停止而不继续,并向我显示具有权限的文件夹中的其余文件?
函数在捕获异常后停止,因为try/catch在循环之外。将其移动到循环中以获得您想要的效果:
static void dirSearch(string dir)
{
foreach (string item in Directory.GetDirectories(dir))
{
Console.WriteLine(item);
try
{
foreach (string str in Directory.GetFiles(item))
{
Console.WriteLine("'t" + str);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
请注意,此函数将只搜索一个级别的目录。如果你想递归搜索,你需要为你找到的每个目录调用dirSearch
,如下所示:
static void dirSearch(string dir)
{
Console.WriteLine(dir);
foreach (string item in Directory.GetDirectories(dir))
{
try
{
dirSearch(item);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
foreach (string str in Directory.GetFiles(dir))
{
Console.WriteLine("'t" + str);
}
}