Lädt...

Ausnahmen in Java

Halte ein kleines int-Array slots, das 2 und 4 enthält. Drucke slots[0], damit der Bildschirm 2 zeigt. Dann lerne, was passiert, wenn du stattdessen slots[5] anforderst: Java wirft ArrayIndexOutOfBoundsException und das Programm stoppt. Kompiliere zuerst Alarm.java und starte java Alarm für die sichere Datei. Einen Laufzeit-Stopp durch eine gebrochene Regel zu sehen — nicht durch ein fehlendes Semikolon — ist der Unterricht dieser Seite. Lass try und catch für die nächste Seite.

Ein sicheres Lesen, das endet

Eine Ausnahme ist Javas Weg zu sagen, dass eine Regel während des Laufs gebrochen wurde. Bisher druckten die meisten Demos eine klare Zeile und endeten ruhig. Diese Seite behält zuerst eine ruhige Demo, dann eine Demo, die mit einem Ausnahme-Namen stoppt.
Öffne Alarm.java. Behalte den öffentlichen Klassennamen Alarm, damit er zum Dateinamen passt. Lösche Reste von ArrayList<Integer>, nums.add(9), Crate-Demos und jedes for-each über oak und pine. Lösche auch jedes Scanner oder nextLine. Das Programm darf nicht auf Tippen warten. Diese Seite braucht keine Import-Zeile.
In main speichere zwei ganze Zahlen:
int[] slots = {2, 4};
Dann drucke den ersten Slot:
System.out.println(slots[0]);
Slot-Nummern beginnen bei null. Slot null hält 2. Speichere, bevor du kompilierst.

Alarm safe slots zero

java
public class Alarm {
    public static void main(String[] args) {
        int[] slots = {2, 4};
        System.out.println(slots[0]);
    }
}

Aus dem Ordner mit Alarm.java führe javac Alarm.java aus. Wenn Klammern, geschweifte Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann starte java Alarm — nicht java Alarm.java. Lass die Endung .java beim Laufbefehl weg.
Das Programm soll eine Zeile drucken und stoppen: 2. Es soll dich nicht tippen lassen. Wenn das Terminal auf Tastatureingabe wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in einer Datei. Lösche diesen Aufruf und behalte das Array plus System.out.println(slots[0]);.
Geh den Lauf einmal durch. Java startet bei Alarm.main. Das Array hält zwei Werte. Der Druck liest Slot null. Der Bildschirm zeigt 2. Nichts anderes soll drucken. Siehst du 9, läuft noch eine Crate-Wrappers-Demo — wechsle zu java Alarm. Siehst du 4, hast du slots[1] gedruckt; die sichere Lehrdatei behält slots[0].

Ein schlechter Index, der wirft

Ändere nur die Druckzeile, sodass sie einen Slot verlangt, der nie geschrieben wurde: slots[5]. Das Array hat weiterhin nur zwei Slots. Zur Laufzeit wirft Java eine Ausnahme statt einer Zahl.

Alarm bad index throws

java
public class Alarm {
    public static void main(String[] args) {
        int[] slots = {2, 4};
        System.out.println(slots[5]);
    }
}

Kompiliere mit javac Alarm.java, dann starte java Alarm. Diesmal druckt das Programm kein 2. Das Terminal zeigt einen Fehlerbericht, der ArrayIndexOutOfBoundsException nennt. Der Lauf stoppt. Zeilen, die du dir nach diesem Druck vorgestellt hast, laufen nicht, weil die Ausnahme das Programm schon gestoppt hat. Merke: javac kann trotzdem gelingen — der schlechte Index ist ein Laufzeitproblem, kein fehlendes Semikolon.
Dieser Stopp ist die Lektion. Du reparierst den Index auf dieser Seite nicht mit try. Du lernst zu erkennen, dass eine gebrochene Regel zur Laufzeit zur Ausnahme wird und den normalen Pfad beendet. Lies den Ausnahme-Namen im Bericht. Behalte die Bad-Index-Datei nur, um diesen Stopp zu sehen. Bevorzuge die sichere Datei, wenn du einen ruhigen Bildschirm mit 2 willst. Stellst du den schlechten Index wieder auf slots[0], kehrt der ruhige Bildschirm zurück; das beweist, dass der Stopp vom Index kam, nicht vom Klassennamen Alarm.
Behandle den Stack-Bericht nicht wie ein normales println-Ergebnis. Java sagt dir, was schiefging. Die Schreibweise des Ausnahme-Typs zählt, wenn du darüber sprichst: ArrayIndexOutOfBoundsException. Nur „Fehler“ zu sagen ist für diese Lektion zu vage — behalte den vollen Typnamen, wenn du den Stopp beschreibst.

Wrappers-Rest ist nicht dieser Crash

Eine dritte Datei erinnert dich an die Integer-Liste der vorherigen Seite. Diese Demo druckt 9 und endet. Sie ist nicht die Ausnahme-Geschichte.

Alarm wrappers leftover contrast

java
import java.util.ArrayList;

public class Alarm {
    public static void main(String[] args) {
        ArrayList<Integer> nums = new ArrayList<Integer>();
        nums.add(9);
        System.out.println(nums.get(0));
    }
}

Dieser Kontrast druckt 9 und endet ohne zu werfen. Nutze ihn nur, um einen fertigen Wrappers-Pfad vom Bad-Index-Alarm-Pfad zu trennen. Für diese Ausnahme-Lektion ist das Lehrpaar der sichere slots[0]-Druck und der werfende slots[5]-Druck. Erfinde auf dieser Seite überhaupt kein try oder catch um die Array-Demos.

Verglichen mit Arrays und Wrappers

Auf der Arrays-Seite bliebst du in geschriebenen Slots. Diese Seite tritt absichtlich hinaus, damit du die Ausnahme siehst. Auf der Wrappers-Seite druckte eine Integer-Liste 9 ohne Crash. Das gilt weiter als Geschichte. Für diese Seite behalte Alarm und die Array-Index-Geschichte.
Andere Ausnahmen gibt es auch — Division durch null kann zum Beispiel ArithmeticException werfen. Diese Seite behält einen klaren Namen: ArrayIndexOutOfBoundsException vom schlechten Index. Du brauchst heute keinen Katalog aller Ausnahme-Typen. Ein festes Beispiel reicht, bevor die nächste Seite die Behandlung lehrt.
Wenn alte Crate.java-Dateien noch in der Nähe liegen, lass sie oder lösche sie nur, wenn sie verwirren, welche Klasse du startest. Starte java Alarm, nachdem du die Datei für die gewünschte Demo kompiliert hast. Wechsle Dateien bewusst, damit sicherer Druck und werfender Druck beim Lernen nicht in einem main vermischt sind.

Was für try und catch bleibt

Diese Seite zeigt, dass eine Ausnahme ein Programm zur Laufzeit stoppen kann. Die nächste Seite führt try und catch ein, damit du manche Probleme behandeln kannst, ohne den ganzen Lauf zu beenden. Bleib hier beim Erkennen des Stopps und des Ausnahme-Namens. Erfinde auf dieser Seite noch keinen Catch-Block als Pflicht.

Vor try und catch

Du kannst slots[0] aus {2, 4} drucken und 2 sehen. Du kannst slots[5] drucken und den Lauf mit ArrayIndexOutOfBoundsException stoppen sehen. Kompiliere Alarm.java und starte java Alarm der Reihe nach für jede behaltene Demo. Die Ausnahme nannte die gebrochene Regel klar. Die nächste Seite ist try und catch, wo ein behandelter Pfad nach manchen Fehlern weiterlaufen kann.
Behalte die sichere Demo für einen ruhigen Bildschirm. Behalte den schlechten Index, um den Stopp zu sehen. Halte try von dieser Seite fern. Diese drei Gewohnheiten sind der Checkpoint, bevor du weitergehst. Wenn du nach dem Bad-Index-Lauf von java Alarm ArrayIndexOutOfBoundsException nennen kannst, haben Ausnahmen ihren Job für diese Lektion getan und du bist bereit für das nächste Thema über Behandlung.

🧠 Testen Sie Ihr Wissen

Bereit zum Start

Testen Sie Ihr Wissen

Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen

❓
6
Fragen
🎯
70%
Zum Bestehen
♾️
∞
Zeit
🔄
∞
Versuche

📝 Anweisungen

  • Lesen Sie jede Frage sorgfältig
  • Wählen Sie die beste Antwort für jede Frage
  • Sie können das Quiz so oft wiederholen, wie Sie möchten
  • Ihr Fortschritt wird oben angezeigt