如何检测现有文件导致的System.IO.IOException?

5 c# asp.net exception-handling ioexception

我想创建并打开一个文件,但前提是它不存在.我不想使用File.Exists,因为一个线程在创建一个具有相同名称的文件后由switch切换.

我如何检查异常System.IO.IOException是否由文件存在引起?我不想解析错误消息(即使它可以像.indexOf一样简单("存在"))

我该怎么办?

jer*_*jvl 6

如果它已经存在,我不确定他是否想要打开文件.

我认为他实际上是在FileMode.CreateNew这之后将抛出一个IOException如果文件已经存在,否则将创建并打开它.


Joh*_*ers 5

您应该避免根据Exception.Message属性的内容做出逻辑决策.这被定义为人类可读的消息,而不是程序要读取的消息.此类消息如有更改,恕不另行通知.

人类可读的消息通常会发生变化,使其对人类更具可读性.这不会让你的节目更快乐.


正如你可能会说的那样,程序逻辑的问题取决于人类可读的消息,这是我的一个宠儿 - 我不会告诉你多久,因为这会让我觉得老.这让我分心了一些应该是显而易见的事情.

请检查当文件不存在时是否收到System.IO.FileNotFoundException.尝试捕获它而不是IOException.

  • 真?什么时候?也许如果它是你的Message属性.否则,你犯了一个错误,咬了许多,只是不经常,但一直很难找到和修复.我似乎记得在从.NET 1.1到.NET 2.0的过渡中出现了一些破碎的代码 - 微软已经修复了标点符号,因此人们的代码破坏了.当然,应该允许微软纠正标点符号.这完全让本地化放在一边...... (3认同)