Java-Wurf und Würfe
Java Throw und Throws
In diesem Tutorial lernen wir anhand von Beispielen die Verwendung der Schlüsselwörter throw und throws für die Ausnahmebehandlung.
In Java können Ausnahmen in zwei Typen eingeteilt werden:
- Ungeprüfte Ausnahmen: Sie werden nicht zur Kompilierzeit, sondern zur Laufzeit überprüft. Zum Beispiel:
ArithmeticException
,NullPointerException
,ArrayIndexOutOfBoundsException
, Ausnahmen unterError
Klasse usw. - Überprüfte Ausnahmen: Sie werden zur Kompilierzeit überprüft. Beispiel:
IOException
,InterruptedException
usw.
Siehe Java-Ausnahmen, um mehr über geprüfte und ungeprüfte Ausnahmen zu erfahren.
Normalerweise müssen wir keine ungeprüften Ausnahmen behandeln. Dies liegt daran, dass aufgrund von Programmierfehlern ungeprüfte Ausnahmen auftreten. Und es ist eine gute Praxis, sie zu korrigieren, anstatt sie zu handhaben.
Dieses Tutorial konzentriert sich nun darauf, wie geprüfte Ausnahmen mit throw
behandelt werden und throws
.
Java wirft Schlüsselwort aus
Wir verwenden den throws
Schlüsselwort in der Methodendeklaration, um die Art der Ausnahmen zu deklarieren, die darin auftreten können.
Seine Syntax ist:
accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 … {
// code
}
Wie Sie der obigen Syntax entnehmen können, können wir throws
verwenden um mehrere Ausnahmen zu erklären.
Beispiel 1:Java wirft Schlüsselwort
import java.io.*;
class Main {
public static void findFile() throws IOException {
// code that may produce IOException
File newFile=new File("test.txt");
FileInputStream stream=new FileInputStream(newFile);
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e){
System.out.println(e);
}
}
}
Ausgabe
java.io.FileNotFoundException: test.txt (No such file or directory)
Wenn wir dieses Programm ausführen, wenn die Datei test.txt
existiert nicht, FileInputStream
wirft einen FileNotFoundException
was den IOException
erweitert Klasse.
Wenn eine Methode keine Ausnahmen behandelt, muss die Art der Ausnahmen, die darin auftreten können, in throws
angegeben werden -Klausel, sodass Methoden weiter oben in der Aufrufliste sie verarbeiten oder mit throws
angeben können Schlüsselwort selbst.
Die findFile()
Methode gibt an, dass ein IOException
geworfen werden kann. Die main()
Methode ruft diese Methode auf und behandelt die Ausnahme, wenn sie ausgelöst wird.
Mehrere Ausnahmen auslösen
So können wir mit throws
mehrere Ausnahmen auslösen Schlüsselwort.
import java.io.*;
class Main {
public static void findFile() throws NullPointerException, IOException, InvalidClassException {
// code that may produce NullPointerException
… … …
// code that may produce IOException
… … …
// code that may produce InvalidClassException
… … …
}
public static void main(String[] args) {
try{
findFile();
} catch(IOException e1){
System.out.println(e1.getMessage());
} catch(InvalidClassException e2){
System.out.println(e2.getMessage());
}
}
}
Hier der findFile()
-Methode gibt an, dass sie NullPointerException
auslösen kann , IOException
, und InvalidClassException
in seinem throws
Klausel.
Beachten Sie, dass wir den NullPointerException
nicht behandelt haben . Dies liegt daran, dass es sich um eine ungeprüfte Ausnahme handelt. Eine Angabe im throws
ist nicht erforderlich Klausel und handhabe sie.
wirft Keyword Vs. versuchen ... fangen ... endlich
Es kann mehrere Methoden geben, die Ausnahmen verursachen können. Schreiben von try...catch
für jede Methode wird mühsam und der Code wird lang und weniger lesbar.
throws
ist auch nützlich, wenn Sie eine Ausnahme geprüft haben (eine Ausnahme, die behandelt werden muss), die Sie in Ihrer aktuellen Methode nicht abfangen möchten.
Java-Wurf-Schlüsselwort
Der throw
Schlüsselwort wird verwendet, um explizit eine einzelne Ausnahme auszulösen.
Wenn eine Ausnahme ausgelöst wird, wird der Ablauf der Programmausführung von try
übertragen Block zum catch
Block. Wir verwenden den throw
Schlüsselwort innerhalb einer Methode.
Seine Syntax ist:
throw throwableObject;
Ein Throwable-Objekt ist eine Instanz der Klasse Throwable
oder Unterklasse von Throwable
Klasse.
Beispiel 2:Java-Throw-Schlüsselwort
class Main {
public static void divideByZero() {
throw new ArithmeticException("Trying to divide by 0");
}
public static void main(String[] args) {
divideByZero();
}
}
Ausgabe
Exception in thread "main" java.lang.ArithmeticException: Trying to divide by 0 at Main.divideByZero(Main.java:3) at Main.main(Main.java:7) exit status 1
In diesem Beispiel werfen wir explizit einen ArithmeticException.
Hinweis: ArithmeticException
ist eine ungeprüfte Ausnahme. Es ist normalerweise nicht notwendig, ungeprüfte Ausnahmen zu behandeln.
Beispiel 3:Auslösen einer geprüften Ausnahme
import java.io.*;
class Main {
public static void findFile() throws IOException {
throw new IOException("File not found");
}
public static void main(String[] args) {
try {
findFile();
System.out.println("Rest of code in try block");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
Ausgabe
File not found
Der findFile()
-Methode löst einen IOException
aus mit der Nachricht, die wir an seinen Konstruktor übergeben haben.
Beachten Sie, dass wir sie im throws
angeben müssen, da es sich um eine geprüfte Ausnahme handelt Klausel.
Die Methoden, die diesen findFile()
aufrufen -Methode muss diese Ausnahme entweder behandeln oder sie mit throws
angeben Schlüsselwort selbst.
Wir haben diese Ausnahme in main
behandelt ()
Methode. Der Ablauf der Programmausführung wird von try
übertragen Block zu catch
blockieren, wenn eine Ausnahme ausgelöst wird. Also, der Rest des Codes in try
Block wird übersprungen und Anweisungen im catch
Block ausgeführt werden.
Java
- Java-Variablen und Literale
- Java Basic Input und Output
- Java-Ausdrücke, -Anweisungen und -Blöcke
- Java-Klasse und -Objekte
- Abstrakte Java-Klasse und abstrakte Methoden
- Java verschachtelte und innere Klasse
- Java fängt mehrere Ausnahmen ab
- Java Autoboxing und Unboxing
- Java String replace(), replaceAll() und replaceFirst() Methode
- Java String toLowercase() und toUpperCase() Methoden