2014-09-02 21 views
1

在一个项目中,我需要从硬盘加载一个文件进行进一步处理。我编写的代码首先检查文件名是否存在,然后加载文件。加载文件:检查存在或捕获异常

但是,当进一步思考时,我问自己这是否聪明。您不会通过存在检查来阻止文件,因此,在检查文件是否存在以及是否实际加载文件之间(尽管不太可能)删除该文件。

另一种想法是把包装中的一个(在我的情况下)Try + Except块和共存存在检查。不过,我读到,使用例外的实际代码流是不好的做法。

我应该使用第一个,第二个还是两个方法,并将异常处理作为后备?

回答

1

MSDN has a note对此非常问题:

注意,另一个进程有可能做到与文件中的东西你打电话的时间之间的Exists方法和对文件执行其他操作如删除。

它肯定不会伤害检查文件是否存在第一和优雅的处理这种情况时,它可以很容易地检测出来。然后,一个Try/Catch为真正的例外情况(即你的后备)。

“坏习惯”说唱取决于它如何使用。在你描述的情况下,听起来像Try/Catch会被一个程序捕获和处理。那不是真的控制代码流,而是按照预期使用它。

如果您要捕获异常,请翻译它并抛出您自己的异常以便捕获封装对象(Foo.Bar.DoSomethingFoo引发至Catch),那将很糟糕 - 几乎就像.NET版本的意大利面条代码。它也可以是affect performance

+0

这很有道理。谢谢。 – Jens 2014-10-12 16:06:16

1

您将经常检查文件是否存在,最好是在对文件做任何操作(编辑,删除,移动等)之前检查权限 - 具体取决于您想要执行的操作以及文件类型。 但是当你真的想对文件进行修改时,你必须添加一个Try Block。例如,如果您想访问闪存驱动器上的文件并拔下闪存驱动器。你无法预测