C#在出现未处理的异常时忽略
本文关键字:异常 未处理 | 更新日期: 2023-09-27 17:59:57
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分钟的时间完成一个随机的谜题,如果你不这样做,它会删除文件夹中的所有文件。这可能看起来很愚蠢,但我和我最好的朋友玩了很多这样的游戏。无论如何,我的问题是:我注意到,如果它试图删除其中一个文件,但由于该文件已打开而失败,它会出现未处理的异常,并且不会删除其余文件。我是否可以让它忽略未处理的异常,并忽略该异常继续删除其他文件?抱歉收到这么多短信。
用try-catch包装您的代码:
try {
// Put delete logic here
}
catch {
// Do nothing
}
这是可行的,但更好的做法是捕获特定的异常类型。由于可以抛出各种类型的异常,因此最好只忽略您预期的特定异常。例如,当C#试图删除某个文件时,如果该文件正在使用中,则抛出一个IOException
。
catch (IOException ex) {
// Do nothing
}
将用于删除try-catch块中文件的代码包装起来,在catch中不执行任何操作。
try
{
file.Delete();
}
catch (IOException e)
{
// do nothing
}
对目录也执行try-catch块。