Menu
Coddy logo textTech

Rückblick – Validierter Benutzer

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

challenge icon

Aufgabe

Einfach

Lass uns ein vollständiges Benutzerregistrierungssystem erstellen, das Eingabedaten validiert und benutzerdefinierte Ausnahmen verwendet, um genau mitzuteilen, was schiefgelaufen ist! Du wirst alles aus diesem Kapitel kombinieren: benutzerdefinierte geprüfte und ungeprüfte Ausnahmen, die Ausnahmehierarchie und try-with-resources mit einem automatisch schließbaren Validator.

Du wirst deinen Code auf fünf Dateien verteilen:

  • ValidationException.java: Erstelle eine geprüfte Ausnahme, die als Basis für alle Validierungsfehler dient. Diese Ausnahme sollte Exception erweitern und einen Konstruktor enthalten, der eine Nachricht akzeptiert.
  • InvalidUsernameException.java: Erstelle eine geprüfte Ausnahme für Fehler bei der Benutzernamenvalidierung. Sie sollte deine Klasse ValidationException erweitern und so eine kleine Ausnahmehierarchie bilden. Füge einen Konstruktor hinzu, der eine Nachricht akzeptiert und sie an die übergeordnete Klasse weitergibt.
  • InvalidAgeException.java: Erstelle eine ungeprüfte Ausnahme für altersbezogene Fehler (z. B. negative Altersangaben, die Programmierfehler darstellen). Sie sollte RuntimeException mit einem Konstruktor erweitern, der eine Nachricht akzeptiert.
  • UserValidator.java: Erstelle eine Klasse, die AutoCloseable implementiert, um eine Validierungssitzung zu simulieren, die ordnungsgemäß geschlossen werden sollte. Dein Validator sollte:

    Im Konstruktor Validator session started ausgeben.

    Eine Methode validateUsername(String username) besitzen, die InvalidUsernameException auslöst, wenn der Benutzername null, leer oder kürzer als 3 Zeichen ist (mit der Nachricht "Username must be at least 3 characters"). Gib andernfalls Username '[username]' is valid aus.

    Eine Methode validateAge(int age) besitzen, die InvalidAgeException auslöst, wenn das Alter negativ ist (mit der Nachricht "Age cannot be negative: [age]"). Wenn das Alter kleiner als 13 ist, löse ValidationException mit der Nachricht "Must be at least 13 years old" aus. Gib andernfalls Age [age] is valid aus.

    close() implementieren, sodass Validator session closed ausgegeben wird.

  • Main.java: Führe dein Validierungssystem zusammen! Du erhältst zwei Eingaben: einen Benutzernamen (String) und ein Alter (Ganzzahl).

    Verwende try-with-resources, um einen UserValidator zu erstellen. Validiere innerhalb des try-Blocks zuerst den Benutzernamen und anschließend das Alter. Wenn beide Prüfungen erfolgreich sind, gib User registration successful! aus.

    Fange InvalidUsernameException ab und gib Username error: [message] aus. Fange InvalidAgeException ab und gib Age error: [message] aus. Fange ValidationException (die übergeordnete Ausnahme) ab und gib Validation error: [message] aus.

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

Du erhältst zwei Eingaben in dieser Reihenfolge: Benutzername (String) und Alter (Ganzzahl).

Diese Herausforderung führt das gesamte Kapitel zusammen: Du wirst eine Ausnahmehierarchie mit ValidationException als übergeordneter Klasse erstellen, sowohl geprüfte als auch ungeprüfte Ausnahmen angemessen verwenden und sicherstellen, dass deine Validator-Ressource mit try-with-resources immer bereinigt wird. Beachte, wie das Abfangen der übergeordneten Ausnahme ValidationException nach ihrer untergeordneten Ausnahme InvalidUsernameException es dir 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

Übe selbstständig: Online-Java-Compiler