Exceptions

Exception-Klassen

Basisklasse

Dateioperationen

Öffne mit java.io.RandomAccessFile die Datei Frequenzen und lese mit readLine() Zeilen aus. Füge die Informationen aus der Datei in die Methode toFreq(...) ein. Ab Java 8 nutzte eine passende Methode aus Files.

Lösung

try-catch in Vererbung*

Angenommen die Klasse C will die Schnittstelle I implementieren und foo() realisieren:

interface I {
  void foo() throws IOException;
}

class C implements I {
  @Override
  public void foo() ??? {
  }
}

Was für eine throws-Klausel muss in foo() in C stehen?

Das Haus ist voll (20 Min.)

Erstelle eine eigene Fehlerklasse IllegalWattException, die immer dann ausgelöst wird, wenn im Programm ein unmögliche Watt-Angabe auftaucht, etwa wenn bei setWatt(watt) die Wattzahl negativ ist. Teste das Auftreten der Exception durch Auffangen.

Lachen am laufenden Band

Welche Exceptions muss man abfangen, wenn man folgenden Block übersetzen möchte?

Thread.sleep( 1000 /* ms */ );
URL url = new File( "lach.wav" ).toURI().toURL();
Applet.newAudioClip( url ).play();

Suche ein paar Lacher-Dateien aus dem Internet und spiele sie in einer Endlosschleife in zufälligen Folgen hintereinander ab.

Für Fortgeschrittene: Packe die URLs in eine ArrayList und lasse es dann vor jedem Durchlauf mit Collections.shuffle(...) durchwürfeln.

try-mit-Ressourcen

Einfache Ein-/Ausgabe

Ein java.io.PrintWriter ist eine einfache Klasse zum Schreiben von Textdateien. Schreibe damit etwas in eine Datei. Schließe den PrintWriter korrekt mit try-mit-Ressourcen.

java.util.Scanner ist eine einfache Klasse zum Lesen und Verarbeiten von Textressourcen. Im Konstruktor übergebe die Datei mit Paths.get("file.txt"). Die die Methoden hasNextLine() und nextLine() sind von besonderem Interesse. Ließ eine Textdatei ein und gib alle Zeichen auf der Konsole aus. Schließe auch den Scanner korrekt mit try-mit-Ressourcen.

Erweitere das Programm wie folgt: Ließ die Datei ein, konvertiere alle Zeilen in Großbuchstaben string.toUpperCase(), und schreibe das Ergebnis in eine neue Datei. Überlege beide Ressourcen in einem try-mit-Ressourcen zu behandeln.