Zitat geschrieben von maf-soft
Dann nehme ich an, dass Stefan Palme einfach gedacht hat, diese Operationen würden Exceptions werfen:
passportfile.delete();
tempfile.renameTo(passportfile);
} catch
Wenn du es nicht selbst machen willst, schreibe ich ihm gerne.
Kannst du gern machen. Wie gesagt: Den Return-Wert der Funktionen kann man natuerlich pruefen und bei False eine Exception werfen. Mehr geht aber nicht. HBCI4Java ist keine GUI-Anwendung.
Das aendert aber wie gesagt nichts an der Ursache des Problems. Naemlich dass die Datei nicht geloescht werden kann. Du wuerdest eher eine Loesung finden, wenn du nach DIESER Ursache suchst. Stattdessen hast du dich jetzt auf die BEHANDLUNG des Fehlers eingeschossen.
Zitat
Klar kannst du. Ich würde genau das tun, wenn es mein Projekt wäre. Insbesondere .delete und .renameTo könnte man wunderbar irgendwo zentral kapseln und müsste dann an den 101 Stellen nur eine einfache Ersetzung machen.
Na dann. Der Source ist offen. Du kannst dich gern daran betun, alle Stellen zu isolieren und das entsprechend umbauen.
Jetzt mal im Ernst: Wenn ich im Programmcode nicht mal darauf vertrauen kann, dass das Filesystem funktioniert, dann kann man auch einen Retry-Loop um jede Schreib-Operation bauen. Das macht niemand. Wenn ein Schreib-Vorgang nicht funktioniert, kommt ein Fehler. Ohne Retry. Sowas kann man vielleicht bei nem File-Upload bauen. Aber doch nicht bei jeder IO-Operation.
Zitat
Den Fehler einfach zu ignorieren und sogar ohne jede Log-Meldung mit einem ungültigen Zustand weiterzumachen, ist auf jeden Fall kein Zustand.
Deswegen schrieb ich ja: Ich kann das so aendern, dass in dem Fall eine Exception geworfen wird. Das aendert aber nichts an deinem Problem. Naemlich dass deine PIN/TAN-Config kaputt geht, weil dein Dateisystem sich "irgendwie merkwuerdig" verhaelt. Mir ist bisher auch kein anderer Fall bekannt, bei dem der bisherige Code ein solches Problem darstellt. Wenn bei Usern mit Windows dieser Fehler mal auftrat, dann liess sich das bisher immer durch Pruefen und Anpassen der Berechtigungen auf dem Ordner/den Dateien loesen.
Zitat
Und in einer normalen Benutzerapplikation wäre ein Retry genau richtig. Sicherlich könnte man es noch weiter treiben und z.B. erstmal eine halbe Sekunde warten und es ohne Benutzerinteraktion nochmal versuchen...
Zeig mir eine Anwendung, die sowas macht.