Java - Throws und Throw: Verständnis der Ausnahmebehandlung
Hallo Zukunftige Java-Programmierer! Heute werden wir eine aufregende Reise in die Welt der Ausnahmebehandlung in Java antreten. Insbesondere werden wir uns auf die Schlüsselwörter throws
und throw
konzentrieren. Keine Sorge, wenn du neu bei der Programmierung bist; ich werde dich Schritt für Schritt durchführen, so wie ich es über die Jahre für unzählige Schüler getan habe. Lass uns reinhaken!
Was sind Ausnahmen?
Bevor wir zu throws
und throw
springen, lassen wir uns kurz zurückblicken, was Ausnahmen sind. Stell dir vor, du bereitest ein Essen zubereitst und folgst einer Rezeptur. Alles läuft glatt, bis – oops! – du erkennst, dass du eine entscheidende Zutat nicht mehr hast. Das ist ähnlich wie eine Ausnahme in der Programmierung: ein unerwartetes Ereignis, das den normalen Ablauf deines Programms stört.
Verständnis von throws
und throw
Das Schlüsselwort throws
Das Schlüsselwort throws
wird in Methodendeklarationen verwendet, um anzuzeigen, dass diese Methode möglicherweise eine oder mehrere Arten von Ausnahmen wirft. Es ist wie ein "Vorsicht: Nasser Boden"-Schild zu setzen – du warstst jeden, der diese Methode verwendet, dass er sich auf mögliche Ausnahmen vorbereiten muss.
Das Schlüsselwort throw
Andererseits wird throw
verwendet, um tatsächlich eine Ausnahme zu erstellen und zu werfen. Es ist wie das tatsächliche Verspritzen von Wasser auf den Boden – du erstellst die Ausnahme-Situation.
Syntax
Lassen Sie uns die Syntax für beide ansehen:
// Verwendung von throws in einer Methodendeklaration
public void meineMethode() throws AusnahmeTyp {
// Methode Body
}
// Verwendung von throw, um eine Ausnahme zu erstellen
throw new AusnahmeTyp("Fehlermeldung");
Java Throws und Throw Beispiel
Lassen Sie uns mit einem einfachen Beispiel beginnen, um sowohl throws
als auch throw
zu veranschaulichen:
public class DivisionBeispiel {
public static double teile(int a, int b) throws ArithmeticException {
if (b == 0) {
throw new ArithmeticException("Kann nicht durch null teilen!");
}
return (double) a / b;
}
public static void main(String[] args) {
try {
System.out.println(teile(10, 2)); // Dies funktioniert gut
System.out.println(teile(10, 0)); // Dies wird eine Ausnahme werfen
} catch (ArithmeticException e) {
System.out.println("Ein Fehler ist aufgetreten: " + e.getMessage());
}
}
}
Lassen Sie uns das aufbrechen:
- Wir deklarieren eine
teile
-Methode, dieArithmeticException
wirft. - In der Methode werfen wir eine neue
ArithmeticException
, wennb
null ist. - In der
main
-Methode verwenden wir einentry-catch
-Block, um potenzielle Ausnahmen zu behandeln.
Wenn Sie dies ausführen, sehen Sie:
5.0
Ein Fehler ist aufgetreten: Kann nicht durch null teilen!
Weitere Beispiele
Beispiel 1: Benutzerdefinierte Ausnahme
Lassen Sie uns eine benutzerdefinierte Ausnahme erstellen und verwenden:
class AlterException extends Exception {
public AlterException(String message) {
super(message);
}
}
public class Wahlsystem {
public static void pruefeEignung(int alter) throws AlterException {
if (alter < 18) {
throw new AlterException("Du musst mindestens 18 Jahre alt sein, um wählen zu dürfen.");
} else {
System.out.println("Du bist wählbar!");
}
}
public static void main(String[] args) {
try {
pruefeEignung(20); // Dies ist in Ordnung
pruefeEignung(15); // Dies wird eine Ausnahme werfen
} catch (AlterException e) {
System.out.println("Fehler: " + e.getMessage());
}
}
}
Dieses Beispiel zeigt, wie Sie Ihre eigenen benutzerdefinierten Ausnahmen erstellen und verwenden können.
Beispiel 2: Mehrere Ausnahmen
Lassen Sie uns sehen, wie man mehrere Ausnahmen behandelt:
import java.io.*;
public class DateiLesenBeispiel {
public static void leseDatei(String dateiname) throws FileNotFoundException, IOException {
FileReader datei = new FileReader(dateiname);
BufferedReader leser = new BufferedReader(datei);
String zeile = leser.readLine();
while (zeile != null) {
System.out.println(zeile);
zeile = leser.readLine();
}
leser.close();
}
public static void main(String[] args) {
try {
leseDatei("beispiel.txt");
} catch (FileNotFoundException e) {
System.out.println("Fehler: Datei nicht gefunden.");
} catch (IOException e) {
System.out.println("Fehler: Problem beim Lesen der Datei.");
}
}
}
Dieses Beispiel zeigt, wie man mehrere Arten von Ausnahmen behandelt, die eine Methode möglicherweise wirft.
Best Practices
- Sei spezifisch: Werfe nur Ausnahmen, die für die Fehlerbedingung geeignet sind.
- Dokumentiere gut: Dokumentiere immer die Ausnahmen, die deine Methode werfen kann, in der Javadoc der Methode.
- Handle oder deklariere: Behandle die Ausnahme mit einem try-catch-Block oder deklariere sie mit throws.
- Nicht übermäßig verwenden: Verwende keine Ausnahmen für den normalen Flusskontrolle. Sie sind für Ausnahmebedingungen.
Fazit
Das Verständnis von throws
und throw
ist entscheidend für die richtige Ausnahmebehandlung in Java. Es ermöglicht dir, robuster und fehlerresistenter Code zu schreiben. Denke daran, Ausnahmen sind deine Freunde – sie helfen dir, Probleme vorauszusehen und elegant zu behandeln.
Während du deinen Java-Weg fortsetzt, wirst du viele Situationen erleben, in denen die Ausnahmebehandlung unverzichtbar wird. Übe weiter und bald wird es dir zweckmäßig werden!
Happy coding, zukünftige Java-Meister!
Credits: Image by storyset