Optimaler Einsatz von Try bei Dateizugriff

Klaus I.

Mitglied
Ich bin da ganz am Anfang und rätsle gerade wie man beim Dateizugriff etwaige Ausnahmen am besten abfängt. Gute Praxis scheint zu sein, zumindest ein zweites "Try" einzusetzen. Ich sehe aber öfter unterschiedliche Beispiele (siehe unten). Was sollte man hier am besten verwenden?

Erstes Beispiel:
Java:
        try {
            BufferedReader br = new BufferedReader(new FileReader("DATENDATEI"));
            String zeile = br.readLine();
            while (zeile != null) {
                zeile = br.readLine();
            } 
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
            }
        }


Zweites Beispiel:
Java:
        try {
            BufferedReader br = new BufferedReader(new FileReader("DATENDATEI"));
            try {
                String zeile = br.readLine();
                while (zeile != null) {
                    zeile = br.readLine();
                }
            } finally {
                br.close();
            }
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
        }
 

httpdigest

Top Contributor
try-with-resources (plus: niemals einfach nur Exceptions auf die Console printen, sondern den Aufrufer entscheiden lassen, was im Fehlerfall zu tun ist):
Java:
public static void leseZeilen() throws IOException {
  try (BufferedReader br = new BufferedReader(new FileReader("DATENDATEI"))) {
    String zeile = br.readLine();
    while (zeile != null) {
      zeile = br.readLine();
    }
  }
}
 

mrBrown

Super-Moderator
Mitarbeiter
Keins von beiden ;)

Stattdessen try-with-resources:

Java:
try (BufferedReader br = Files.newBufferedReader(Paths.get(""))){
    String zeile = br.readLine();
    while (zeile != null) {
        zeile = br.readLine();
    }
} catch (IOException e) {
    e.printStackTrace();
}

Oder abstrakter:

Java:
try (Stream<String> lines = Files.lines(Paths.get(""))) {
    ...
} catch (IOException e) {
    e.printStackTrace()
}
 

Klaus I.

Mitglied
Gleich zwei sofortige Antworten zu dieser späten Stunde? Besten Dank:)

Das "try-with-resources" war auf jeden Fall ein super Stichwort und man ergoogelt sich gleich einen guten Text von Oracle.
Mit dieser Konstruktion kann man also auch auf das explizite br.close(); verzichten, da es seit einiger Zeit ein AutoCloseable gibt.

Dann entstammen meine Beispiele wohl noch aus der Java-Steinzeit. Oder der Prof wollte die armen Studenten nicht mit zuviel sinnvoller Information belasten. :rolleyes:

Ich schaue mir das "morgen" nochmal genauer an - Merci vielmals!
 
K

kneitzel

Gast
Gleich zwei sofortige Antworten zu dieser späten Stunde? Besten Dank:)

Das "try-with-resources" war auf jeden Fall ein super Stichwort und man ergoogelt sich gleich einen guten Text von Oracle.
Mit dieser Konstruktion kann man also auch auf das explizite br.close(); verzichten, da es seit einiger Zeit ein AutoCloseable gibt.

Dann entstammen meine Beispiele wohl noch aus der Java-Steinzeit. Oder der Prof wollte die armen Studenten nicht mit zuviel sinnvoller Information belasten. :rolleyes:

Ich schaue mir das "morgen" nochmal genauer an - Merci vielmals!
Oder der Prof wollte, dass sich die Leute Gedanken machen, was ihr Code denn so im Detail macht.

Es ist ja regelmäßig so, dass man Dinge behandelt / selbst machen soll, die man später nicht mehr braucht, weil es dafür fertige Lösungen gibt.
 

Ähnliche Java Themen

Neue Themen


Oben