在For循环中放置Try-Catch是不好的做法吗?

Emm*_*een 5 c# for-loop try-catch

我正在创建一个删除子目录/文件的命令行实用程序.如果正在使用文件,System.IO.IOException则抛出该文件.我在for循环中使用了try-catch块.

题:

1.在for循环中有一个try-catch是不好的做法吗?

2.如果是,什么是更好的选择?

我的代码:

  System.IO.DirectoryInfo di = new DirectoryInfo(path);

    foreach (FileInfo file in di.GetFiles())
    {
         try
         {
             file.Delete(); 
         }
         catch(System.IO.IOException)
         {
           Console.WriteLine("Please Close the following File {0}", file.Name);
         }

    }
Run Code Online (Sandbox Code Playgroud)

mac*_*mac 14

不,这可能非常有用.例如:如果您不想在抛出Exception时完全停止循环,或者由于Exception而无法为当前迭代运行额外的代码,您可以执行以下操作.

System.IO.DirectoryInfo di = new DirectoryInfo(path);

foreach (FileInfo file in di.GetFiles())
{
     try
     {
         file.Delete(); 
     }
     catch(System.IO.IOException)
     {
       Console.WriteLine("Please Close the following File {0}", file.Name);
       continue;
     }
     //
     // Other Code 
     //
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以记录错误以便稍后查看,但仍会处理您尝试处理的其余内容.

  • 这里的"继续"是多余的; 你已经在循环体的末尾,所以`continue`不会跳过任何东西. (2认同)