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 

例は、実際には、私はそれがどのように見えるだろうと考えていたものよりもさらに恐ろしい出てきました。

今私は間違っていることを知っています。キャッチで発生している可能性のあるエラーを本当に処理しようとすると、ファイルを移動してイベントを呼び出せますか?

答えて

3

それはすべて私によく見えます。キャッチの中にブロックをキャッチしようとするのは完全に合理的です。あなたは言及したことをすべて確認することができますが、ネットワークがダウンする可能性が常にあります。そうしないと、そのファイルを書くことができなくなります。それ以降は、あなた次第です。エラーメッセージと一時停止処理は妥当と思われます。

+0

十分フェア:あなたはフラグを使用して、それはどちらか良いとは限りません考えるかもしれません。ありがとう、ちょうどそのようにするのは間違っているように見えましたが、なぜ私は何か良いものを考えることができなかったのです。 – RiddlerDev

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 

ないようにはるかに優れて...

+0

私はそれほど清潔ではないと言います。 – stimms

+0

もちろん、入れ子になったExceptionsのアプローチは、あなたが正しくそれを行う方法であると言いました。 –

関連する問題