【发布时间】:2016-02-05 02:23:39
【问题描述】:
大家好,我正在开发一个程序,它会删除某些目录文件,主要是临时文件,除了我得到一个错误,即使我知道我添加了一个 catch 块。 System.UnauthorizedAccessException。在 catch ioexception 上我得到了错误:
private void DeleteInternetFiles(string internetDirectory)
{
DirectoryInfo internetTempStorage = new DirectoryInfo(internetDirectory);
try
{
//this will delete files
foreach (FileInfo getNetFileInfo in internetTempStorage.GetFiles())
{
getNetFileInfo.Delete();
}
//this will loop through and delete folders
foreach (DirectoryInfo tempDirectoryInformation in internetTempStorage.GetDirectories())
{
tempDirectoryInformation.Delete();
}
}
//catch io exception and try delete file again
catch (IOException)
{
//delete file in this directory
File.Delete(internetDirectory);
//delete folders in this directory
Directory.Delete(internetDirectory);
}
//catch access exception and delete file again
catch (UnauthorizedAccessException)
{
//delete file in this directory
File.Delete(internetDirectory);
//delete folders in this directory
Directory.Delete(internetDirectory);
}
}
下面这个是我如何调用该方法的:
if (checkBox1.Checked)
{
DeleteInternetFiles(@"C:\Users\" + Environment.UserName + @" \AppData\Local\Microsoft\Windows\Temporary Internet Files");
}
【问题讨论】:
-
另外DeleteInternetFiles方法中的参数叫做string internetDirectory,由于某种原因不能贴出来。
-
第二个 catch 块仅从原始 try 中的代码中捕获 UnauthorizedAccessException,而不是从第一个 catch 块内部。
标签: c#