English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ausnahmen sind Probleme, die während der Ausführung des Programms auftreten (Laufzeitfehler). Wenn eine Ausnahme auftritt, wird das Programm plötzlich beendet und der Code nach der Zeile mit der Ausnahme wird niemals ausgeführt.
import java.util.Scanner; public class ExceptionExample { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Geben Sie die erste Zahl ein:"); int a = sc.nextInt(); System.out.println("Geben Sie die zweite Zahl ein:"); int b = sc.nextInt(); int c = a/b; System.out.println("Das Ergebnis ist: ");+c); } }
Ausgaberesultat
Geben Sie die erste Zahl ein: 100 Geben Sie die zweite Zahl ein: 0 Exception in thread "main" java.lang.ArithmeticException: / von zero at ExceptionExample.main(ExceptionExample.java:10)
Sie könnenthrow Das Schlüsselwort 'throw' wird verwendet, um benutzerdefinierte oder vorgedefinierte Ausnahmen explizit auszulösen.
Es gibt zwei Typen von benutzerdefinierten und vorgedefinierten Ausnahmen, und jede Ausnahme wird durch eine Klasse dargestellt, die von der Klasse Throwable abgeleitet ist.
Um eine Ausnahme explizit auszulösen, müssen Sie die Klasse ihrer Instanzialisierung initialisieren und deren Objekt mit dem Schlüsselwort 'throw' auswerfen.
Der folgende Java-Programm verursacht einen NullPointerException
public class ExceptionExample { public static void main(String[] args) { System.out.println("Hello"); NullPointerException nullPointer = new NullPointerException(); throw nullPointer; } }
Ausgaberesultat
Hello Exception in thread "main" java.lang.NullPointerException at MyPackage.ExceptionExample.main(ExceptionExample.java:6)
Jedes Mal, wenn eine Ausnahme explizit geworfen wird, muss sichergestellt werden, dass die Zeile mit dem Schlüsselwort 'throw' die letzte Zeile des Programms ist. Dies liegt daran, dass jeglicher Code, der nach dieser Zeile geschrieben wird, nicht zugänglich ist und es zu Compile-Zeitfehlern kommt, wenn Sie weiter unten im Code noch Codezeilen haben.
public class ExceptionExample { public static void main(String[] args) { System.out.println("Hello"); NullPointerException nullPointer = new NullPointerException(); throw nullPointer; System.out.println("How are you"); } }
D:\>javac ExceptionExample.java ExceptionExample.java:6: error: unreachable statement System.out.println("How are you"); ^ 1 error
Der Schlüsselwort 'throw' wird normalerweise verwendet, um benutzerdefinierte Ausnahmen auszulösen. Jedes Mal, wenn wir unsere eigenen Ausnahmen definieren müssen, müssen wir eine Klasse definieren, die die Klasse Throwable erweitert, und die erforderlichen Methoden überschreiben.
Instanziieren Sie diese Klasse und verwenden Sie den Schlüsselwort 'throw', um sie an jedem Ort, an dem eine Ausnahme erforderlich ist, auszulösen.
In folgendem Java-Programm erstellen wir eine benutzerdefinierte Ausnahmeklasse namens AgeDoesnotMatchException.
public class AgeDoesnotMatchException extends Exception { AgeDoesnotMatchException(String msg) { super(msg); } }
Eine andere Klasse Student enthält zwei private Variablen name und einen parameterisierten Konstruktor zur Initialisierung von Instanzvariablen.
Als Hauptmethode akzeptieren wir den Namen und das Alter des Benutzers und initialisieren die Klasse Student durch Übermittlung der empfangenen Werte.
In der Konstruktor-Methode der Klasse Student erstellen wir eine AusnahmeAgeDoesnotMatchExceptionder Klasse, und initialisiert die Klasse Student durch Übermittlung der empfangenen Werte.17und24zwischen, eine Ausnahme wurde ausgelöst (verwenden Sie throws).
public class Student extends RuntimeException { private String name; private int age; public Student(String name, int age) { try { if (age <17|| age >24) { String msg = "Age is not between 17 und 24"; AgeDoesnotMatchException ex = new AgeDoesnotMatchException(msg); throw ex; } } catch (AgeDoesnotMatchException e) { e.printStackTrace(); } this.name = name; this.age = age; } public void display() { System.out.println("Name des Studenten: ")+this.name ); System.out.println("Alter des Studenten: ")+this.age ); } public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Geben Sie den Namen des Studenten ein: "); String name = sc.next(); System.out.println("Geben Sie das Alter des Studenten ein, sollte sein 17 und 24 (einschließlich 17 und 24); int age = sc.nextInt(); Student obj = new Student(name, age); obj.display(); } }
Ausgaberesultat
Beim Ausführen dieses Programms müssen Sie Namen- und Alterwerte von der Tastatur übergeben. Wenn das angegebene Alter nicht zwischen17und24wenn das Alter nicht zwischen diesen Werten liegt, wird eine Ausnahme ausgelöst, wie folgt-
Geben Sie den Namen des Studenten ein: Krishna Geben Sie das Alter des Studenten ein, sollte sein 17 und 24 (einschließlich 17 und 24) 14 AgeDoesnotMatchException: Alter ist nicht zwischen 17 und 24 Name des Studenten: Krishna' Alter des Studenten: 14 at Student.<init>(Student.java:18) at Student.main(Student.java:39)