In Java können wir unsere eigenen Ausnahmen erstellen, die abgeleitete Klassen der Exception-Klasse sind. Das Erstellen einer eigenen Ausnahme wird als benutzerdefinierte Ausnahme oder benutzerdefinierte Ausnahme bezeichnet. Grundsätzlich werden benutzerdefinierte Java-Ausnahmen verwendet, um die Ausnahme entsprechend den Benutzeranforderungen anzupassen.
Betrachten Sie Beispiel 1, in dem die InvalidAgeException-Klasse die Exception-Klasse erweitert.
Mit der benutzerdefinierten Ausnahme können wir Ihre eigene Ausnahme und Nachricht erstellen. Hier haben wir eine Zeichenfolge an den Konstruktor der Superklasse, d. h. der Ausnahmeklasse, übergeben, die mit der Methode getMessage() für das von uns erstellte Objekt abgerufen werden kann.
In diesem Abschnitt erfahren Sie, wie benutzerdefinierte Ausnahmen in Java-Programmen implementiert und verwendet werden.
Warum benutzerdefinierte Ausnahmen verwenden?
Java-Ausnahmen decken fast alle allgemeinen Arten von Ausnahmen ab, die bei der Programmierung auftreten können. Manchmal müssen wir jedoch benutzerdefinierte Ausnahmen erstellen.
Im Folgenden sind einige Gründe für die Verwendung benutzerdefinierter Ausnahmen aufgeführt:
- Um eine Teilmenge vorhandener Java-Ausnahmen abzufangen und gezielt zu behandeln.
- Ausnahmen der Geschäftslogik: Dies sind die Ausnahmen im Zusammenhang mit der Geschäftslogik und dem Workflow. Für Anwendungsbenutzer oder Entwickler ist es hilfreich, das genaue Problem zu verstehen.
Um eine benutzerdefinierte Ausnahme zu erstellen, müssen wir die Exception-Klasse erweitern, die zum Paket java.lang gehört.
Betrachten Sie das folgende Beispiel, in dem wir eine benutzerdefinierte Ausnahme namens WrongFileNameException erstellen:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Hinweis: Wir müssen den Konstruktor schreiben, der den String als Fehlermeldung verwendet. Er wird als Konstruktor der übergeordneten Klasse bezeichnet.
Beispiel 1:
Sehen wir uns ein einfaches Beispiel einer benutzerdefinierten Java-Ausnahme an. Im folgenden Code verwendet der Konstruktor von InvalidAgeException eine Zeichenfolge als Argument. Diese Zeichenfolge wird mithilfe der super()-Methode an den Konstruktor der übergeordneten Klasse Exception übergeben. Auch der Konstruktor der Exception-Klasse kann ohne Verwendung eines Parameters aufgerufen werden und der Aufruf der super()-Methode ist nicht zwingend erforderlich.
TestCustomException1.java
// class representing custom exception class InvalidAgeException extends Exception { public InvalidAgeException (String str) { // calling the constructor of parent Exception super(str); } } // class that uses custom exception InvalidAgeException public class TestCustomException1 { // method to check the age static void validate (int age) throws InvalidAgeException{ if(age <18){ throw an object of user defined exception new invalidageexception('age is not valid to vote'); } else { system.out.println('welcome main method public static void main(string args[]) try calling the validate(13); catch (invalidageexception ex) system.out.println('caught exception'); printing message from invalidageexception system.out.println('exception occured: ' + ex); system.out.println('rest code...'); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception.webp" alt="Java Custom Exception"> <h3>Example 2:</h3> <p> <strong>TestCustomException2.java</strong> </p> <pre> // class representing custom exception class MyCustomException extends Exception { } // class that uses custom exception MyCustomException public class TestCustomException2 { // main method public static void main(String args[]) { try { // throw an object of user defined exception throw new MyCustomException(); } catch (MyCustomException ex) { System.out.println('Caught the exception'); System.out.println(ex.getMessage()); } System.out.println('rest of the code...'); } } </pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception-2.webp" alt="Java Custom Exception"> <hr></18){>
Ausgabe:
18){>