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 に答える