Hallöchen Zusammen,
immer wieder liest und hört man von Try Catch Blöcken. Die einen sind dafür die anderen dagegen.
Ich stehe jetzt vor einem Problem bei dem ich nicht genau weiß, was die sinnvollste Lösung dafür ist.
Ich habe einen Windows-Dienst geschrieben, der einen Ordner überwacht. Wenn hier eine neue Datei reinflattert wird eine andere Anwendung mit Parametern gestartet, die dann eben genau diese Datei verarbeitet.
Soweit so gut..
Die eigentliche Anwendung (nicht der Windows-Dienst) bearbeitet also die Dateien. Hier soll nun jede Erfolgreich verarbeitete Datei in einen Ordner "Erledigt" verschoben werden.
Jede Datei die aufgrund von irgendeinem Fehler (egal welcher Art) nicht korrekt bearbeitet werden kann, soll in einen Ordner "Fehler" verschoben werden. Zusätzlich wird hier dann eine Email versendet die den Fehler + Dateinamen beinhaltet um
diese im nachhinein nochmal Prüfen zu können.
Das Verschieben der Dateien oder das Senden einer Mail ist hier nicht das Problem, sondern wie man diese Fehler am besten abfängt?
Am besten wäre natürlich soetwas wie:
Verarbeite Datei "XY" -> Wenn erfolgreich dann Verschieben in Ordner "Erledigt"
Wenn nicht erfolgreich (durch egal welchen Fehler) dann "Abbruch" -> Mail Senden -> Verschieben in "Fehler" ->Programm beenden um die nächste Datei zu bearbeiten.
Ein Fehler soll ja nicht dazu führen, dass gar nichts mehr abgearbeitet wird, sondern nur diese eine Datei eben nicht.
Aktuell habe ich das über Try Catch erledigt, dass sieht dann ungefähr so aus:
Leider ist es nur so, dass die Datei trotzdem in den Ordner "Erledigt" verschoben wird obwohl ein Fehler aufgetreten ist.
Eventuell habe ich hier dass try catch auch noch nicht richtig verstanden aber eventuell ist try catch auch der Falsche Ansatz dafür?
Was sagt Ihr dazu? Wie wäre eure Vorgehensweise? ISt try catch hier sinnvoll nur von mir falsch benutzt oder gibt es bessere Methoden?
Vielen Dank schonmal vorab.
Gruß
immer wieder liest und hört man von Try Catch Blöcken. Die einen sind dafür die anderen dagegen.
Ich stehe jetzt vor einem Problem bei dem ich nicht genau weiß, was die sinnvollste Lösung dafür ist.
Ich habe einen Windows-Dienst geschrieben, der einen Ordner überwacht. Wenn hier eine neue Datei reinflattert wird eine andere Anwendung mit Parametern gestartet, die dann eben genau diese Datei verarbeitet.
Soweit so gut..
Die eigentliche Anwendung (nicht der Windows-Dienst) bearbeitet also die Dateien. Hier soll nun jede Erfolgreich verarbeitete Datei in einen Ordner "Erledigt" verschoben werden.
Jede Datei die aufgrund von irgendeinem Fehler (egal welcher Art) nicht korrekt bearbeitet werden kann, soll in einen Ordner "Fehler" verschoben werden. Zusätzlich wird hier dann eine Email versendet die den Fehler + Dateinamen beinhaltet um
diese im nachhinein nochmal Prüfen zu können.
Das Verschieben der Dateien oder das Senden einer Mail ist hier nicht das Problem, sondern wie man diese Fehler am besten abfängt?
Am besten wäre natürlich soetwas wie:
Verarbeite Datei "XY" -> Wenn erfolgreich dann Verschieben in Ordner "Erledigt"
Wenn nicht erfolgreich (durch egal welchen Fehler) dann "Abbruch" -> Mail Senden -> Verschieben in "Fehler" ->Programm beenden um die nächste Datei zu bearbeiten.
Ein Fehler soll ja nicht dazu führen, dass gar nichts mehr abgearbeitet wird, sondern nur diese eine Datei eben nicht.
Aktuell habe ich das über Try Catch erledigt, dass sieht dann ungefähr so aus:
VB.NET-Quellcode
- Try
- ExecuteParams() 'Aufruf von der eigentlichen Prozedur um die Datei zu bearbeiten.
- movefile("Erledigt") 'Funktion um Dateien zu verschieben
- Catch ex As Exception
- Protokollspeichern("Prot", "Fehler bei: " & aktuelleDatei & " // " & ex.ToString) 'Hier wird nur ein Protokoll geschrieben
- ErrorMailSend("Fehler bei: " & aktuelleDatei & " // " & ex.ToString) 'Hier wird die Email gesendet.
- movefile("Error") 'Verschieben in "Error"
- Application.Exit()
- End Try
Leider ist es nur so, dass die Datei trotzdem in den Ordner "Erledigt" verschoben wird obwohl ein Fehler aufgetreten ist.
Eventuell habe ich hier dass try catch auch noch nicht richtig verstanden aber eventuell ist try catch auch der Falsche Ansatz dafür?
Was sagt Ihr dazu? Wie wäre eure Vorgehensweise? ISt try catch hier sinnvoll nur von mir falsch benutzt oder gibt es bessere Methoden?
Vielen Dank schonmal vorab.
Gruß