Hallöchen,
aktuell arbeite ich an einer Anwendung, die unter Anderem in einem bestimmten Ordner alle bestimmten Dateien auslesen und parsen soll. Problem hierran ist, dass es dabei bei bestimmten Dateien zu einem OutOfMemoryError führen kann, da sie schlicht zu groß sind (Sind aber keine schlichten Textdateien, die man einfach Zeilenweise auslesen kann).
Dass man keine Error abfangen soll ist mir klar, da man so nicht genau weiß, ob noch der komplette Speicherbereich korrekt ist. Wie verhällt es sich dabei aber, wenn ich diese "risikoreichen" Operationen in einen eigenen Thread auslagere? Wenn dieser erfolgreich durchläuft, möchte ich die ermittelten Daten auslesen, ansonsten sollen sie vollständig verworfen werden.
Mein Ziel soll dabei sein, dass, wenn es zu einem Fehler kommt, die nachfolgenden Dateien trotzdem ausgelesen werden können und der Anwender ggf. eine Meldung bekommt, dass es bei Datei XY zum Problem kam.
So hab ich das testweise auch schon umgesetzt und es wirkt oberflächlich (!) betrachtet i.O.
Ist es in dem Fall i.O so vorzugehen oder ist es trotzdem zu heikel die Anwendung weiterlaufen zu lassen, anstatt sterben zu lassen?
Das ganze läuft unter Tomcat. Wie handhabt dieser das eigentlich? Wenn durch bestimmte Seitenaufrufe ein Error auftritt zeigt dieser ja auch nur ne Fehlermeldung an, lässt aber soweit die JVM weiterlaufen, oder nicht?
Ich bedanke mich schonmal für die Antworten.
Schönen Gruß
Morchel
aktuell arbeite ich an einer Anwendung, die unter Anderem in einem bestimmten Ordner alle bestimmten Dateien auslesen und parsen soll. Problem hierran ist, dass es dabei bei bestimmten Dateien zu einem OutOfMemoryError führen kann, da sie schlicht zu groß sind (Sind aber keine schlichten Textdateien, die man einfach Zeilenweise auslesen kann).
Dass man keine Error abfangen soll ist mir klar, da man so nicht genau weiß, ob noch der komplette Speicherbereich korrekt ist. Wie verhällt es sich dabei aber, wenn ich diese "risikoreichen" Operationen in einen eigenen Thread auslagere? Wenn dieser erfolgreich durchläuft, möchte ich die ermittelten Daten auslesen, ansonsten sollen sie vollständig verworfen werden.
Mein Ziel soll dabei sein, dass, wenn es zu einem Fehler kommt, die nachfolgenden Dateien trotzdem ausgelesen werden können und der Anwender ggf. eine Meldung bekommt, dass es bei Datei XY zum Problem kam.
So hab ich das testweise auch schon umgesetzt und es wirkt oberflächlich (!) betrachtet i.O.
Ist es in dem Fall i.O so vorzugehen oder ist es trotzdem zu heikel die Anwendung weiterlaufen zu lassen, anstatt sterben zu lassen?
Das ganze läuft unter Tomcat. Wie handhabt dieser das eigentlich? Wenn durch bestimmte Seitenaufrufe ein Error auftritt zeigt dieser ja auch nur ne Fehlermeldung an, lässt aber soweit die JVM weiterlaufen, oder nicht?
Ich bedanke mich schonmal für die Antworten.
Schönen Gruß
Morchel