public void countdown()
{
label1.Text = "0";
label2.Text = "4";
label3.Text = "59";
h = Convert.ToInt32(label1.Text);
m = Convert.ToInt32(label2.Text);
s = Convert.ToInt32(label3.Text);
label1.Text = "0";
label2.Text = "4";
label3.Text = "59";
timer1.Start();
}
private void timer1_Tick_1(object sender, EventArgs e)
{
string hh = Convert.ToString(h);
string mm = Convert.ToString(m);
string ss = Convert.ToString(s);
label1.Text = hh;
label2.Text = mm;
label3.Text = ss;
s = s - 1;
if (s == -1)
{
m = m - 1;
s = 59;
}
if (m == -1)
{
h = h - 1;
m = 59;
}
if (h == 0 && m == 0 && s == 0)
{
timer1.Stop();
MessageBox.Show("Times up! You lost");
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string path2 = "\\Puzzle";
string fullpath = path + path2;
DirectoryInfo di = new DirectoryInfo(fullpath);
foreach (FileInfo file in di.GetFiles())
{
file.Delete();
}
foreach (DirectoryInfo dir in di.GetDirectories())
{
dir.Delete(true);
}
}
}
所以我正在制作一个迷你游戏(这里只是倒数计时器),你选择文件,然后他们会在桌面上找到一个名为Puzzle的文件夹,你有5分钟完成一个随机拼图,如果你没有,它将删除文件夹中的所有文件。这可能看起来很愚蠢,但我和我最好的朋友一起做了很多这个游戏。无论如何,我的问题是:我注意到,如果它尝试删除其中一个文件并且因为该文件被打开而失败,它会给出一个未处理的异常并且不会删除其余的文件。 无论如何,我可以让它忽略那个未处理的异常,只是继续删除忽略那个的其他文件? 对于这么多文本而言太过分了。
答案 0 :(得分:2)
将代码包装在try-catch中:
try {
// Put delete logic here
}
catch {
// Do nothing
}
这样可行,但更好的做法是捕获特定的异常类型。由于可以抛出各种类型的异常,因此最好只忽略您预期的特定异常。例如,如果在C#尝试删除文件时正在使用某个文件,则会抛出IOException
。
catch (IOException ex) {
// Do nothing
}
答案 1 :(得分:0)
将用于删除文件的代码包装在try-catch块中,并且在catch中不执行任何操作。
try
{
file.Delete();
}
catch (IOException e)
{
// do nothing
}
也为目录执行try-catch块。