我有一个需要使用FileStream解析文件的应用程序。如果该文件由另一个进程使用,则FileStream初始化将抛出IOException。我抓住了那个例外,告诉用户关闭文件,我提议让用户“重试”。#34;不幸的是,即使用户关闭了文件,每次重试都会导致抛出另一个IOException。为什么会发生这种情况,如何解决?
我在使用块中有FileStream,然后用FileShare.Read打开文件。因为它在使用块内部,所以当抛出异常时它应该被处理掉,不应该吗?
goto
我尝试过的事情:
retryFlag
代替递归方法调用ParseFile(path)
,将其设置在catch块中,然后在之后调用{/ 1}} 如果标志位于每个解决方案都以相同的结果结束:抛出IOExceptions的永无止境的循环。
答案 0 :(得分:0)
所以,直接回答问题:
您不需要,使用块将关闭流。使用块的幕后使用try-catch-finally,在finally块中,他们调用dispose来关闭你的流。
许多评论都有其他优点,但我希望这能回答你的问题。
您可能想要尝试的其他内容只是输出exception.message而不是使用您自己的文件覆盖来关闭文件。你得到的IOException可能不是那个......