Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Ausnahmen Erstellen | Ausnahmen
Java JUnit Bibliothek. Arten von Tests
course content

Kursinhalt

Java JUnit Bibliothek. Arten von Tests

Java JUnit Bibliothek. Arten von Tests

1. Testen in der Entwicklung
2. Unit Tests
3. Ausnahmen

book
Ausnahmen Erstellen

Es ist an der Zeit, eigene benutzerdefinierte Ausnahmen zu erstellen, die Sie in Ihren Programmen auslösen können. Zunächst ist es wichtig zu beachten, dass es zwei Arten von Ausnahmen gibt.

Arten von Ausnahmen in Java

  • Geprüfte Ausnahmen: Dies sind Ausnahmen, die entweder abgefangen oder in der Methodensignatur deklariert werden müssen. Sie werden zur Kompilierzeit überprüft.
    Beispiel: IOException;

  • Ungeprüfte Ausnahmen: Diese Ausnahmen werden nicht zur Kompilierzeit überprüft. Sie weisen normalerweise auf Programmierfehler hin, wie Logikfehler oder falsche API-Nutzung.
    Beispiel: NullPointerException.

Hinweis

Sie haben vielleicht bemerkt, dass wir bis zu diesem Punkt ungeprüfte Ausnahmen besprochen haben, da sie die Logik der Anwendung beeinflussen. In diesem Kapitel werden wir auch ungeprüfte Ausnahmen verwenden, die Fehler in der Logik einer Methode/Anwendung anzeigen.

Erstellen von benutzerdefinierten Ausnahmen

Um eine benutzerdefinierte Ausnahme in Java zu erstellen, erweitern Sie typischerweise entweder Exception ( für geprüfte Ausnahmen ) oder RuntimeException ( für ungeprüfte Ausnahmen ).

Schritte zum Erstellen einer benutzerdefinierten Ausnahme:

  1. Definieren Sie eine neue Klasse: Ihre Ausnahmeklasse sollte entweder Exception oder RuntimeException erweitern, je nachdem, ob Sie möchten, dass es eine geprüfte oder ungeprüfte Ausnahme ist;
  2. Konstruktorüberladung: Definieren Sie Konstruktoren für Ihre Ausnahmeklasse. Sie können mehrere Konstruktoren erstellen, um verschiedene Arten von Informationen über die Ausnahme zu übergeben ( z.B. eine einfache Nachricht oder eine andere auslösende Ursache ).

Beispiel einer benutzerdefinierten geprüften Ausnahme:

java

CustomCheckedException

copy
1234567
public class CustomCheckedException extends Exception { public CustomCheckedException(String message) { super(message); } // Additional constructors can be added if needed }

Beispiel für eine benutzerdefinierte Unchecked-Ausnahme:

java

CustomUncheckedException

copy
1234567
public class CustomUncheckedException extends RuntimeException { public CustomUncheckedException(String message) { super(message); } // Additional constructors can be added if needed }

Übung

Nun, lassen Sie uns ein wenig üben und unsere eigene Ausnahme erstellen, die verwendet wird, wenn der Benutzer nicht das erforderliche Alter hat, um etwas in einem Online-Shop zu kaufen. Diese Ausnahme sollte einen Namen haben, der den Fehler repräsentiert, den sie anzeigt.
Zum Beispiel NotOfLegalAgeException oder PurchaseProhibitedException.

Hinweis

Diese Ausnahme wird unchecked sein, da ein solcher Fehler die Logik des Programms verletzt.

Nun können wir diese Ausnahme in unserem Code verwenden und sie in Methoden werfen. Schreiben wir eine Methode, die das Alter des Benutzers überprüft und eine Ausnahme auslöst, wenn er jünger als 21 Jahre alt ist.

java

main

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
package com.example; public class Main { public static void main(String[] args) { User bob = new User("bob@bobmail.com", "Bob", "some properties..", 20); InternetShopService shopService = new InternetShopService(); shopService.order(bob, "Tequila", 21); } } class InternetShopService { public boolean checkAge(User user, int requiredAge) { return user.getAge() >= requiredAge; } public void order(User user, String item, int requiredAge) { boolean permission = checkAge(user, requiredAge); if (permission) { System.out.println("Ordered successfully!"); } else { throw new PurchaseProhibitedException( String.format("You can't buy %s till you reach %d years old", item, requiredAge)); } //database operations } // other methods } class User { private String email; private String name; private String properties; private int age; public User(String email, String name, String properties, int age) { this.email = email; this.name = name; this.properties = properties; this.age = age; } public int getAge() { return age; } } class PurchaseProhibitedException extends RuntimeException { public PurchaseProhibitedException(String message) { super(message); } }

Wie Sie sehen können, verwenden wir die erstellte Ausnahme im Code. Jetzt bleibt nur noch, diese Ausnahme zu behandeln, wenn die Methode, die sie auslöst, aufgerufen wird, und die Ausnahme-Nachricht auf der Konsole auszugeben. Wir werden dies natürlich mit einer try-catch-Struktur tun.

java

main

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
package com.example; public class Main { public static void main(String[] args) { User bob = new User("bob@bobmail.com", "Bob", "some properties..", 20); InternetShopService shopService = new InternetShopService(); try { shopService.order(bob, "Tequila", 21); } catch (PurchaseProhibitedException e) { System.out.println("Exception caught: " + e.getMessage()); } } } class InternetShopService { public boolean checkAge(User user, int requiredAge) { return user.getAge() >= requiredAge; } public void order(User user, String item, int requiredAge) { boolean permission = checkAge(user, requiredAge); if (permission) { System.out.println("Ordered successfully!"); } else { throw new PurchaseProhibitedException( String.format("You can't buy %s till you reach %d years old", item, requiredAge)); } //database operations } // other methods } class User { private String email; private String name; private String properties; private int age; public User(String email, String name, String properties, int age) { this.email = email; this.name = name; this.properties = properties; this.age = age; } public int getAge() { return age; } } class PurchaseProhibitedException extends RuntimeException { public PurchaseProhibitedException(String message) { super(message); } }

Jetzt können Sie Ihre eigenen benutzerdefinierten Ausnahmen erstellen und in Ihrem Code auslösen. Hervorragend!

1. Was sind die zwei Haupttypen von Ausnahmen in Java?

2. Welche Klasse sollte eine benutzerdefinierte geprüfte Ausnahme erweitern?

3. Was ist ein Hauptmerkmal von unchecked exceptions in Java?

4. Was ist der Zweck der PurchaseProhibitedException-Klasse im bereitgestellten Beispiel?

5. Was bewirkt der Aufruf von super(message) im Konstruktor von PurchaseProhibitedException?

Was sind die zwei Haupttypen von Ausnahmen in Java?

Was sind die zwei Haupttypen von Ausnahmen in Java?

Wählen Sie die richtige Antwort aus

Welche Klasse sollte eine benutzerdefinierte geprüfte Ausnahme erweitern?

Welche Klasse sollte eine benutzerdefinierte geprüfte Ausnahme erweitern?

Wählen Sie die richtige Antwort aus

Was ist ein Hauptmerkmal von unchecked exceptions in Java?

Was ist ein Hauptmerkmal von unchecked exceptions in Java?

Wählen Sie die richtige Antwort aus

Was ist der Zweck der `PurchaseProhibitedException`-Klasse im bereitgestellten Beispiel?

Was ist der Zweck der PurchaseProhibitedException-Klasse im bereitgestellten Beispiel?

Wählen Sie die richtige Antwort aus

Was bewirkt der Aufruf von `super(message)` im Konstruktor von `PurchaseProhibitedException`?

Was bewirkt der Aufruf von super(message) im Konstruktor von PurchaseProhibitedException?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 5
We're sorry to hear that something went wrong. What happened?
some-alt