English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ausnahmen sind Probleme, die während der Ausführung des Programms auftreten (Laufzeitfehler). Um das Ziel zu verstehen, betrachten wir es auf eine andere Weise.
Normalerweise wird beim Kompilieren eines Programms, wenn keine .class-Datei erstellt wird, ist diese Datei die ausführbare Datei in Java und sollte jedes Mal erfolgreich ausgeführt werden, wenn diese .class-Datei ausgeführt wird, um jede Zeile im Programm ohne Probleme auszuführen. Aber in einigen speziellen Fällen begegnen die JVM während der Ausführung des Programms einigen unklaren Situationen, die sie nicht wissen, wie sie handhaben sollen.
Dies sind einige Beispielszenarien-
Wenn die Größe Ihres Arrays10wenn eine Zeile im Code versucht, den11Elemente.
Wenn Sie versuchen, eine Zahl durch 0 zu teilen (Ergebnis ist unendlich und die JVM kann es nicht bewerten).
Normalerweise wird das Programm beim Auftreten einer Ausnahme plötzlich an der Zeile, die die Ausnahme verursacht, beendet, so dass der Rest des Programms nicht ausgeführt werden kann. Um dies zu verhindern, müssen Sie Ausnahmen behandeln.
Um Ausnahmen zu behandeln, bietet Java den try-catch-Block-Mechanismus.
Um den Code, der möglicherweise Ausnahmen verursachen kann, zu umgeben, wird ein try platziert / catch-Block. try / Der Code im catch-Block wird als geschützter Code bezeichnet.
try { // Geschützter Code } catch (ExceptionName e1) { // Catch-Block
Wenn eine Ausnahme im try-Block ausgelöst wird, beendet die JVM die Ausnahme-Details nicht, sondern beendet das Programm nicht, speichert die Ausnahme-Details im Ausnahme-Stack und geht in den catch-Block.
Ein catch-Statement bezieht sich auf die Angabe des zu catchenden Ausnahme-Typs. Wenn eine Ausnahme im try-Block auftritt, wird sie an den nachfolgenden catch-Block weitergegeben.
Wenn eine Ausnahmeart im catch-Block aufgeführt wird, wird die Ausnahme auf die gleiche Weise weitergegeben, wie Parameter an Methodenparameter übergeben werden.
import java.io.File; import java.io.FileInputStream; public class Test { public static void main(String args[]){ System.out.println("Hello"); try{ File file = new File("my_file"); FileInputStream fis = new FileInputStream(file); } System.out.println("Der angegebene Dateipfad wurde nicht gefunden");
Ausgabeergebnis
Der angegebene Dateipfad wurde nicht gefunden
Der finally-Block befindet sich nach dem try- oder catch-Block. Ein finally-Codeblock wird immer ausgeführt, egal ob eine Ausnahme aufgetreten ist oder nicht.
public class ExcepTest { public static void main(String args[]) { 2] try { System.out.println("Zugriff auf Element drei: " + 3] }}catch(ArrayIndexOutOfBoundsException e) { System.out.println("Ausnahme ausgelöst:") + e); }finally { a[0] = 6; System.out.println("Erster Elementwert: " + a[0]); System.out.println("Der finally-Ausdruck wird ausgeführt");
Ausgabeergebnis
Ausnahme ausgelöst: java.lang.ArrayIndexOutOfBoundsException: 3 Erster Elementwert: 6 Der finally-Ausdruck wird ausgeführt