0

要求:发生错误(抛出异常)时,应将正在处理的文件移动到有错误文件的文件夹(app.config 设置)。

问题:我可以处理这个问题的唯一方法是在主 Try/Catch 内有一个嵌套的 Try/Catch 来尝试移动文件,这样如果移动失败,则会引发另一个异常。我知道我可以尽我所能确保目录存在,赋予权限,但由于它是一个网络驱动器......我只知道在某些时候一定会发生错误。

例子

Try
   (Do Some Logic, but an error happens)
Catch ex As Exception
   Try
       (Attempt to move file)
   Catch exinner as Exception
       Throw New Exception("Cannot move file to Error Directory", innerex)
   End Try
   (Raise Error Event for logging by form/batch app)
End Try

实际上,这比我想象的要可怕得多。

现在我知道我做错了什么。我应该如何真正尝试处理捕获中可能发生的错误,以便我仍然可以移动文件并尝试调用我的事件?

4

2 回答 2

3

这一切对我来说都很好。在 catch 中包含 try catch 块是完全合理的。您可以检查您提到的所有内容,但总是有可能网络会出现故障,或者您根本无法写入该文件。之后你做什么取决于你。错误消息和暂停处理似乎是合理的。

于 2009-08-13T15:03:13.930 回答
1

这正是您在仅使用异常时的做法。您可能会考虑使用标志,但这也不是更好:

(Set file processing error flag to false)
Try
   (Do Some Logic, but an error happens)
Catch ex As Exception
   (Set file processing error flag to true)
End Try

IF (file processing error flag = true)
   Try
       (Attempt to move file)
   Catch exinner as Exception
       Throw New Exception("Cannot move file to Error Directory", innerex)
   End Try
   (Raise Error Event for logging by form/batch app)
End Try

没有那么好...

于 2009-08-13T15:03:47.237 回答