要求: 在出现错误(抛出异常)时,应将正在处理的文件移动到有错误文件的文件夹(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
实际上,这比我想象的更糟糕。
现在我知道我做错了什么。我应该如何处理捕获中可能发生的错误,以便我仍然可以移动文件并尝试调用我的事件?
答案 0 :(得分:3)
这对我来说都很好看。在catch中尝试catch块是完全合理的。您可以检查您提到的所有内容,但总是有可能网络将关闭或您只是普通的将无法写入该文件。你做了什么取决于你。错误消息和暂停处理似乎是合理的。
答案 1 :(得分:1)
这正是您在使用Exceptions时的方式。您可以考虑使用标志,但这也不是更好:
(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
没那么好......