Java - Benutzerdefinierte Ausnahme

Hallo zusammen, zukünftige Java-Zauberer! Heute tauchen wir ein in die magische Welt der benutzerdefinierten Ausnahmen in Java. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind; ich werde Sie auf dieser Reise Schritt für Schritt führen, genau wie ich es in den letzten Jahren für unzählige Schüler getan habe. Also, holen Sie sich Ihre virtuellen Zauberstäbe (Tastaturen), und lasst uns einige Ausnahmezauber werfen!

Java - Custom Exception

Was sind Ausnahmen?

Bevor wir uns den benutzerdefinierten Ausnahmen zuwenden, lassen Sie uns schnell wiederholen, was Ausnahmen in Java sind. Stellen Sie sich vor, Sie kochen ein köstliches Gericht, aber plötzlich realizeiren Sie, dass Ihnen ein wichtiger Zutat fehlt. Das ist ähnlich wie eine Ausnahme im Programmieren – es ist ein unerwartetes Ereignis, das den normalen Ablauf Ihres Programms unterbricht.

Java bietet viele integrierte Ausnahmen, aber manchmal müssen wir unsere eigenen erstellen. Hier kommen die benutzerdefinierten Ausnahmen ins Spiel!

Bedarf an benutzerdefinierten Java-Ausnahmen

Sie fragen sich vielleicht, "Warum brauchen wir benutzerdefinierte Ausnahmen, wenn Java bereits so viele hat?" Lassen Sie mich das mit einer spaßigen Analogie erklären.

Stellen Sie sich vor, Sie spielen ein Spiel "Fange die Ausnahme". Die integrierten Ausnahmen von Java sind wie Standardbälle, aber manchmal brauchen Sie einen besonderen Ball, der perfekt in Ihre Hand passt. Das sind die benutzerdefinierten Ausnahmen – auf Ihre spezifischen Programmbedürfnisse zugeschnitten!

Benutzerdefinierte Ausnahmen ermöglichen es uns:

  1. Bedeutungsvollere Fehlermeldungen zu erstellen
  2. Verwandte Ausnahmen zu gruppieren
  3. Zusätzliche Eigenschaften zu Ausnahmen hinzuzufügen

Erstellen einer benutzerdefinierten Ausnahme in Java

Nun, rollen wir die Ärmel hoch und erstellen unsere erste benutzerdefinierte Ausnahme! Es ist einfacher, als Sie denken.

Hier ist die grundlegende Struktur:

public class MeineBenutzerdefinierteAusnahme extends Exception {
public MeineBenutzerdefinierteAusnahme(String nachricht) {
super(nachricht);
}
}

Lassen Sie uns das auseinandernehmen:

  1. Wir erstellen eine neue Klasse und nennen sie (in diesem Fall MeineBenutzerdefinierteAusnahme).
  2. Wir erweitern die Klasse Exception (oder RuntimeException, wenn wir eine nicht überprüfte Ausnahme möchten).
  3. Wir erstellen einen Konstruktor, der einen String-Parameter für die Nachricht annimmt.
  4. Wir rufen den Superkonstruktor mit super(nachricht) auf.

Beispiel für eine benutzerdefinierte Java-Ausnahme

Lassen Sie uns ein praktischeres Beispiel erstellen. Stellen wir uns vor, wir erstellen eine Banking-Anwendung, und wir möchten eine benutzerdefinierte Ausnahme erstellen, wenn jemand versucht, mehr Geld abzuheben, als er auf seinem Konto hat.

public class UnzureichendeGelderException extends Exception {
private double betrag;

public UnzureichendeGelderException(double betrag) {
super("Entschuldigung, unzureichende Mittel. Sie benötigen weitere " + betrag + " Euro.");
this.betrag = betrag;
}

public double getBetrag() {
return betrag;
}
}

Nun sehen wir, wie wir diese Ausnahme in unserer BankAccount-Klasse verwenden können:

public class BankAccount {
private double kontoStand;

public BankAccount(double anfangsKontoStand) {
this.kontoStand = anfangsKontoStand;
}

public void abheben(double betrag) throws UnzureichendeGelderException {
if (betrag > kontoStand) {
double fehlt = betrag - kontoStand;
throw new UnzureichendeGelderException(fehlt);
}
kontoStand -= betrag;
System.out.println("Erfolgreiche Abhebung. Neuer Kontostand: " + kontoStand);
}
}

Und hier ist, wie wir es in unserem Hauptprogramm verwenden könnten:

public class BankingApp {
public static void main(String[] args) {
BankAccount konto = new BankAccount(100);
try {
konto.abheben(150);
} catch (UnzureichendeGelderException e) {
System.out.println(e.getMessage());
System.out.println("Sie müssen mindestens einzahlen: " + e.getBetrag());
}
}
}

Wenn Sie dieses Programm ausführen, wird die Ausgabe sein:

Entschuldigung, unzureichende Mittel. Sie benötigen weitere 50.0 Euro.
Sie müssen mindestens einzahlen: 50.0

Ist das nicht toll? Wir haben eine benutzerdefinierte Ausnahme erstellt, die uns nicht nur mitteilt, dass ein Fehler aufgetreten ist, sondern auch nützliche Informationen darüber gibt, wie viel mehr Geld benötigt wird!

Beispiel: Erstellen einer benutzerdefinierten Klasse durch Erweitern von RuntimeException

Manchmal möchten Sie möglicherweise eine nicht überprüfte Ausnahme erstellen. In diesem Fall erweitern Sie RuntimeException anstelle von Exception. Hier ist ein Beispiel:

public class UngültigesAlterException extends RuntimeException {
public UngültigesAlterException(String nachricht) {
super(nachricht);
}
}

Und hier ist, wie Sie es verwenden könnten:

public class Person {
private int alter;

public void setAge(int alter) {
if (alter < 0 || alter > 150) {
throw new UngültigesAlterException("Das Alter muss zwischen 0 und 150 liegen");
}
this.alter = alter;
}
}

In diesem Fall müssen wir die Ausnahme nicht in der Methodensignatur deklarieren oder sie explizit abfangen (obwohl es oft eine gute Idee ist, dies zu tun).

Schlussfolgerung

Und das war's, Leute! Sie haben gerade gelernt, wie man benutzerdefinierte Ausnahmen in Java erstellt und verwendet. Denken Sie daran, dass benutzerdefinierte Ausnahmen wie Ihr persönlicher Schweizer Army Knife in der Programmierung sind – sie helfen Ihnen, Fehler effektiver zu handhaben und Ihren Code lesbarer und wartbarer zu machen.

Während Sie Ihre Java-Reise fortsetzen, werden Sie immer mehr Verwendungsfälle für benutzerdefinierte Ausnahmen finden. Sie sind ein mächtiges Werkzeug in Ihrem Programmierwerkzeugkasten, das Ihnen hilft, robuste und benutzerfreundliche Anwendungen zu erstellen.

Weiter üben, weiter codieren und vor allem: Spaß haben! Schließlich, wie ich meinen Schülern immer sage, Programmieren ist wie Magie – Sie erschaffen etwas aus dem Nichts. Und jetzt können Sie sogar steuern, wie Ihr Programm reagiert, wenn Dinge schiefgehen. Wie cool ist das denn?

Bis zum nächsten Mal, viel Spaß beim Coden!

Credits: Image by storyset