Question

L'exigence:   Sur une erreur (exception levée), le fichier en cours de traitement doit être déplacé dans le dossier des fichiers avec des erreurs (réglage app.config).

Le problème:   La seule façon que je peux de gérer cela est d'avoir un essai imbriquée / Catch à l'intérieur de la principale Try / Catch pour essayer de déplacer le fichier, de cette façon si le mouvement échoue, une autre exception est levée. Je sais que je peux faire de mon mieux pour vous assurer que le répertoire existe, les droits sont donnés, mais comme il est un lecteur réseau ... Je sais juste une erreur est lié à se produire à un moment donné.

Exemple

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

En fait, qui est sorti encore plus horrible que ce que je pensais que ce serait ressembler.

Maintenant, je sais que je fais quelque chose de mal. Comment dois-je vraiment essayer de gérer une éventuelle erreur produit dans le catch, afin que je puisse encore se déplacer des fichiers et essayer d'appeler mon événement?

Était-ce utile?

La solution

Que tout me semble bon. Il est tout à fait raisonnable d'avoir des blocs catch try dans une prise. Vous pouvez vérifier toutes les choses dont vous avez parlé, mais il y a toujours la possibilité que le réseau va baisser ou vous tout simplement ne sera pas en mesure d'écrire ce fichier. Ce que vous faites après est à vous. Un message d'erreur et le traitement pause semble raisonnable.

Autres conseils

C'est exactement comment vous le faites lorsque vous utilisez uniquement des exceptions. Vous pouvez envisager d'utiliser des drapeaux, mais ce n'est pas mieux non plus:

(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

Pas beaucoup mieux ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top