Java: Fehlerbehandlung
Bei Fehlern, die das Programm erst während der Laufzeit bemerkt, stürzt es leicht mit Fehlermeldungen ab, die unverständlich oder nichtssagend sind. Fehlerbehandlungsroutinen können in solchen Fällen für eine verständliche Meldung sorgen oder sogar dafür, dass das Programm sinnvoll weitermacht.Anders ist es mit Laufzeitfehlern. Das Programm ist formal richtig, wird deshalb compiliert und gestartet, aber während der Laufzeit tritt ein Problem auf, das Java nicht lösen kann, beipielsweise wenn eine Datei gelesen werden soll, die nicht existiert oder, wie in unserem Beispiel, keine Schachtel mehr da ist, in welche die Autos gepackt werden können. Ohne Fehlerbehandlung würde das Programm mit einer meist unverständlichen Meldung abstürzen. Eleganter wäre es, wenn statt dessen eine Meldung erscheint: "Die Datei existert nicht." Oder "Es ist keine Schachtel mehr da.", und dann wird das Programm ordentlich beendet. Dafür gibt es Fehlerbehandlungsroutinen. Jede höhere Programmiersprache bietet sie an, und in Java gibt es sie als "Exceptions" mit den Schlüsselwörtern
try-catch-finally
.
try-catch-finally
Mittry
wird Java gesagt, dass es versuchen soll, den folgenden Anweisungsblock auszuführen. Passiert dabei ein Laufzeitfehler, dann soll die Exception ausgeführt werden, die bei catch
angegeben ist. finally
ist optional, aber die finally
-Anweisungen werden in jedem Fall ausgeführt.
try
{
NimmAutos(3);
}
catch ( Exception e )
{
Meldung("Ich kann keine Autos nehmen");
}
finally
arbeiten. Das finally
wird auf jeden Fall ausgeführt:
try
{
NimmAutos(3);
}
finally
{
Meldung("Hier mache ich weiter, egal was passiert");
}
throw(s)
Im Kopf einer Methode, von der man befürchten muss, dass sie einen Fehler auslöst, kann man einethrows
-Klausel angeben. Sie bewirkt, dass der Fehler nicht in dieser Methode, sondern in der aufrufenden Methode behandelt wird:
void NimmAutos (int AnzahlAutos) throws Exception e
{
Anweisungen;
}
Exceptions kann man auch selbst erzeugen. Dazu dient das Schlüsselwort
throw
(ohne s, im Gegensatz zu oben): Wenn die Funktion NimmAutos()
fehlschlägt, soll Java die Exception MeineException "werfen":
if ( ! NimmAutos(3))
{
throw new MeineException ("Ich kann keine Autos nehmen");
}
Weiterlesen: ⯈ Funktionen
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project
Karriere bei a coding project - Wir freuen uns auf dich!
Alle unsere Stellen sind Remote oder an unseren Standorten in Münster und Wuppertal verfügbar:
- PHP-Entwickler (m/w/d) mit Fokus Laravel
- Frontend-Entwickler (m/w/d)
- Technischer Kundenbetreuer (m/w/d)
// Warum Du Dich für uns entscheiden solltest
- Regelmäßig neue Projekte, die Du von Grund an mit planen und aufbauen kannst
- Arbeit in einem wachsenden IT-Unternehmen
- So viel Home-Office wie Du möchtest - Und einen Arbeitsplatz in unserem Büro in Münster
- Wöchentliche Vorträge: Jeden Freitag hält ein Mitarbeiter einen Vortrag über ein Fachthema seiner Wahl