当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在For循环中放置Try-Catch是不好的做法吗?》经验,为你挑选了1个好方法。

我正在创建一个删除子目录/文件的命令行实用程序.如果正在使用文件,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);
         }

    }

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 
     //
}

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



1> mac..:

不,这可能非常有用.例如:如果您不想在抛出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 
     //
}

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


这里的"继续"是多余的; 你已经在循环体的末尾,所以`continue`不会跳过任何东西.
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有