2016-08-02 87 views
0
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); 
       } 
     } 
    } 

因此,進出口製作小遊戲(這裏僅僅是倒數計時器),您選擇文件,然後他們去到您的桌面文件夾,名爲拼圖,你有5分鐘完成一個隨機的謎題,如果你沒有,它會刪除文件夾內的所有文件。這可能看起來很愚蠢,但我和我最好的朋友做了很多這樣的遊戲。無論如何,我的問題是:我注意到,如果它試圖刪除其中一個文件,並且由於該文件被打開而失敗,它會給出未處理的異常並且不會刪除其餘的文件。 有無論如何,我可以讓它忽略那個未處理的異常,只是繼續刪除其他文件忽略那個? 適合這麼多的文字。C#忽略未處理的異常的情況下

回答

0

將用於刪除try-catch塊中的文件的代碼包裹起來,並在catch中不做任何事情。

try 
{ 
    file.Delete(); 
} 
catch (IOException e) 
{ 
    // do nothing 
} 

對目錄也做這個try-catch塊。

2

包裝你的代碼在一個try-catch:

try { 
    // Put delete logic here 
} 
catch { 
    // Do nothing 
} 

這工作,但更好的做法是捕捉特定的異常類型。由於可能拋出各種類型的異常,因此僅忽略您期望的特定異常是個好主意。例如,如果C#試圖刪除文件時正在使用文件,則會引發IOException

catch (IOException ex) { 
    // Do nothing 
}