Menu
Coddy logo textTech

Recap – Validierter Benutzer

Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 63 von 87.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein vollständiges Benutzerregistrierungssystem erstellen, das Eingabedaten validiert und benutzerdefinierte Exceptions verwendet, um genau zu kommunizieren, was schiefgelaufen ist! Sie werden alles aus diesem Kapitel kombinieren: benutzerdefinierte Checked und Unchecked Exceptions, die Exception-Hierarchie und Try-with-Resources mit einem Auto-Closeable-Validator.

Sie werden Ihren Code über fünf Dateien organisieren:

  • ValidationException.java: Erstellen Sie eine Checked Exception, die als Basis für alle Validierungsfehler dient. Diese Exception sollte Exception erweitern und einen Konstruktor enthalten, der eine Nachricht akzeptiert.
  • InvalidUsernameException.java: Erstellen Sie eine Checked Exception für Fehler bei der Benutzernamen-Validierung. Diese sollte Ihre ValidationException-Klasse erweitern und so eine kleine Exception-Hierarchie bilden. Fügen Sie einen Konstruktor hinzu, der eine Nachricht akzeptiert und diese an das Elternelement weitergibt.
  • InvalidAgeException.java: Erstellen Sie eine Unchecked Exception für altersbezogene Fehler (wie negative Altersangaben, die Programmierfehler darstellen). Diese sollte RuntimeException erweitern und einen Konstruktor enthalten, der eine Nachricht akzeptiert.
  • UserValidator.java: Erstellen Sie eine Klasse, die AutoCloseable implementiert, um eine Validierungssitzung zu simulieren, die ordnungsgemäß geschlossen werden sollte. Ihr Validator sollte:

    Im Konstruktor "Validator session started" ausgeben.

    Eine Methode validateUsername(String username) haben, die eine InvalidUsernameException wirft, wenn der Benutzername null, leer oder kürzer als 3 Zeichen ist (mit der Nachricht "Username must be at least 3 characters"). Andernfalls geben Sie "Username '[username]' is valid" aus.

    Eine Methode validateAge(int age) haben, die eine InvalidAgeException wirft, wenn das Alter negativ ist (mit der Nachricht "Age cannot be negative: [age]"). Wenn das Alter weniger als 13 Jahre beträgt, werfen Sie eine ValidationException mit der Nachricht "Must be at least 13 years old". Andernfalls geben Sie "Age [age] is valid" aus.

    Implementieren Sie close(), um "Validator session closed" auszugeben.

  • Main.java: Führen Sie Ihr Validierungssystem zusammen! Sie erhalten zwei Eingaben: einen Benutzernamen (String) und ein Alter (Integer).

    Verwenden Sie Try-with-Resources, um einen UserValidator zu erstellen. Validieren Sie innerhalb des Try-Blocks zuerst den Benutzernamen und dann das Alter. Wenn beides erfolgreich ist, geben Sie "User registration successful!" aus.

    Fangen Sie InvalidUsernameException ab und geben Sie "Username error: [message]" aus. Fangen Sie InvalidAgeException ab und geben Sie "Age error: [message]" aus. Fangen Sie ValidationException (das Elternelement) ab und geben Sie "Validation error: [message]" aus.

    Der Validator sollte automatisch geschlossen werden, unabhängig davon, ob die Validierung erfolgreich ist oder fehlschlägt!

Sie erhalten zwei Eingaben in der folgenden Reihenfolge: Benutzername (String) und Alter (Integer).

Diese Herausforderung führt das gesamte Kapitel zusammen: Sie bauen eine Exception-Hierarchie mit ValidationException als Basisklasse auf, verwenden sowohl Checked als auch Unchecked Exceptions angemessen und stellen sicher, dass Ihre Validator-Ressource mit Try-with-Resources immer bereinigt wird. Beachten Sie, wie das Abfangen der übergeordneten ValidationException nach ihrem Kind InvalidUsernameException es Ihnen ermöglicht, zuerst spezifische Fälle zu behandeln und dennoch andere Validierungsfehler abzufangen!

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Eingaben lesen
        String username = scanner.nextLine();
        int age = scanner.nextInt();
        
        // TODO: Verwende try-with-resources, um einen UserValidator zu erstellen
        // Innerhalb des try-Blocks:
        //   1. Validiere den username
        //   2. Validiere das age
        //   3. Wenn beides erfolgreich ist, gib "User registration successful!" aus
        
        // TODO: Fange InvalidUsernameException ab und gib "Username error: [message]" aus
        
        // TODO: Fange InvalidAgeException ab und gib "Age error: [message]" aus
        
        // TODO: Fange ValidationException (parent) ab und gib "Validation error: [message]" aus
        
        // Note: Der Validator sollte automatisch geschlossen werden, unabhängig von Erfolg oder Misserfolg!
    }
}

Alle Lektionen in Objektorientierte Programmierung