Eine Exception signalisiert, dass der normale Ablauf nicht fortgesetzt werden konnte. try markiert einen geschützten Ablauf. catch behandelt einen passenden Fehler. Ressourcen wie geöffnete Dateien müssen wieder geschlossen werden. try-with-resources erledigt das zuverlässig, auch wenn während der Verarbeitung ein Fehler entsteht.
01Eine sichere Beispieldatei erstellen
Speichere sample.txt mit zwei Namen im Lernordner. Wir lesen nur diese Datei. Path.of beschreibt ihren Pfad. Ein relativer Pfad bezieht sich auf den aktuellen Arbeitsordner, nicht automatisch auf den Ordner der Java-Datei.
Ada
Lin
02Eine Ressource öffnen
Files.newBufferedReader öffnet einen Textleser. UTF_8 legt die Zeichenkodierung fest. Die Ressource steht in den runden Klammern nach try. Java ruft close beim Verlassen dieses Blocks auf. readLine liefert am Dateiende null.
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) {
try (var reader = Files.newBufferedReader(Path.of("sample.txt"), StandardCharsets.UTF_8)) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException error) {
System.err.println("Cannot read sample: " + error.getMessage());
}
}
}
Starten / prüfen
java Main.java03Den Fehlerweg auslösen
Benenne sample.txt um und starte erneut. IOException wird behandelt. Ein Fehler ist etwas anderes als eine leere Datei. In einer echten Oberfläche sollten diese beiden Fälle unterscheidbare Rückmeldungen erhalten.
Ada und Lin erscheinen. Ohne Datei erscheint eine Fehlermeldung.
Deine Übung
Zähle die gelesenen Zeilen und gib am Ende die Anzahl aus.
Lösung mit Erklärung anzeigen
Lege innerhalb von try vor der Schleife int count = 0 an, erhöhe ihn für jede Zeile und gib ihn nach der Schleife aus. Bei der Beispieldatei ist das Ergebnis 2. Leere Zeilen zählen dabei ebenfalls als gelesene Zeilen.
Projektbezug und Quellen
Das Beispiel ist zum Lernen vereinfacht. Die verlinkte Codeversion zeigt die Anwendung im Projekt und die dortigen Prüfungen.