在未处理的异常情况下C#忽略

时间:2016-08-02 23:40:32

标签: c# admin

    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分钟完成一个随机拼图,如果你没有,它将删除文件夹中的所有文件。这可能看起来很愚蠢,但我和我最好的朋友一起做了很多这个游戏。无论如何,我的问题是:我注意到,如果它尝试删除其中一个文件并且因为该文件被打开而失败,它会给出一个未处理的异常并且不会删除其余的文件。 无论如何,我可以让它忽略那个未处理的异常,只是继续删除忽略那个的其他文件? 对于这么多文本而言太过分了。

2 个答案:

答案 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块。