这对我来说真的很难,因为我不知道用于此的正确术语,但基本上我想要完成的是..如果我的代码无法执行它跳过并尝试下一件事..不确定我是否需要试试看&捕捉循环,但它在这里。
正如你所看到的那样,我试图通过按下按钮从我的临时文件夹中删除东西,它在我的电脑上抛出一个错误说
拒绝访问路径“文件名”。
我希望代码忽略它并跳转到下一个文件并尝试那个或者更好的只是给代码访问权限删除文件,而不是当然使用该文件。
这可能吗?
private void label6_Click(object sender, EventArgs e)
{
string tempPath = Path.GetTempPath();
DirectoryInfo di = new DirectoryInfo(tempPath);
foreach (FileInfo file in di.GetFiles())
{
file.Delete();
}
}
答案 0 :(得分:6)
foreach (FileInfo file in di.GetFiles())
{
try
{
file.Delete();
}
catch(Exception e)
{
// Log error.
}
}
答案 1 :(得分:3)
抓住必需的例外(在你的情况下忽略):
private void label6_Click(object sender, EventArgs e)
{
string tempPath = Path.GetTempPath();
DirectoryInfo di = new DirectoryInfo(tempPath);
foreach (FileInfo file in di.GetFiles())
{
try
{
file.Delete();
}
catch (IOException)
{
// ignore all IOExceptions:
// file is used (e.g. opened by some other process)
}
catch (SecurityException) {
// ignore all SecurityException:
// no permission
}
catch (UnauthorizedAccessException)
{
// ignore all UnauthorizedAccessException:
// path is directory
// path is read-only file
}
}
}
答案 2 :(得分:0)
您需要捕获异常并对是否退出循环做出决定
看到这个问题 - How handle an exception in a loop and keep iterating?
答案 3 :(得分:0)
首先,您应该为可能引发错误的内容添加条件检查。如果您的代码中还有其他无法控制的条件,请添加try-catch语句。
答案 4 :(得分:0)
您想要的是一种非常常见的编程功能,称为异常处理或错误处理。使用此功能可以告诉代码如果抛出异常该怎么做。在C#(和大多数语言)中,您使用try-catch块。它是最基本的,它看起来像:
try
{
file.Delete();
}
catch(Exception e)
{
//log error or display to user
}
//execution continues
如果file.Delete()
抛出异常,则异常将被捕获'在catch
块中,您可以在继续之前检查异常并采取相应的操作。
一些资源: