Menu
Coddy logo textTech

Eine benutzerdefinierte Exception verwenden

Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy. Lektion 57 von 68.

Nachdem Sie nun Ihre eigene benutzerdefinierte Exception-Klasse erstellt haben, ist es an der Zeit, sie in der Praxis einzusetzen. Die Verwendung einer benutzerdefinierten Exception umfasst zwei wichtige Schritte: das Auslösen (Throwing) Ihres spezifischen Exception-Typs, wenn ein Problem auftritt, und das Abfangen (Catching) dieses spezifischen Exception-Typs, um ihn angemessen zu behandeln.

Wenn Sie eine benutzerdefinierte Exception auslösen, verwenden Sie dasselbe throw-Schlüsselwort, erstellen jedoch eine Instanz Ihrer eigenen Klasse anstelle der generischen Exception-Klasse. Dies macht Ihre Fehlerbehandlung präziser und aussagekräftiger.

<?php
class InvalidEmailException extends Exception {}

function validateEmail($email) {
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        throw new InvalidEmailException("Invalid email format: " . $email);
    }
    echo "Email is valid!";
}
?>

Die wahre Stärke zeigt sich beim Abfangen Ihrer benutzerdefinierten Exception. Anstatt eine generische Exception abzufangen, können Sie Ihre spezifische InvalidEmailException abfangen. Dies ermöglicht es Ihnen, verschiedene Arten von Fehlern auf unterschiedliche Weise zu behandeln, wodurch Ihre Fehlerbehandlung gezielter und informativer wird.

<?php
try {
    validateEmail("invalid-email");
} catch (InvalidEmailException $e) {
    echo "Email error: " . $e->getMessage();
}
?>

Dieser Ansatz bietet Ihnen eine präzise Kontrolle über die Fehlerbehandlung und ermöglicht es Ihnen, unterschiedlich auf verschiedene Arten von Problemen in Ihrer Anwendung zu reagieren.

challenge icon

Aufgabe

Einfach

Du erhältst drei Eingaben: eine Zeichenkette für den Benutzernamen, eine Zeichenkette für das Passwort und eine Zahl für die Mindestlänge des Passworts. Der Benutzername darf nicht leer sein, und das Passwort muss die Mindestlängenanforderung erfüllen.

Erstelle eine benutzerdefinierte Ausnahme-Klasse namens InvalidCredentialsException, die die Basisklasse Exception erweitert.

Erstelle eine Funktion namens validateCredentials, die drei Parameter akzeptiert: Benutzername, Passwort und Mindestlänge. Innerhalb dieser Funktion:

  • Wenn der Benutzername leer ist (eine leere Zeichenkette), löse eine InvalidCredentialsException mit der Nachricht "Username cannot be empty" aus.
  • Wenn die Passwortlänge kleiner als die Mindestlänge ist, löse eine InvalidCredentialsException mit der Nachricht "Password must be at least X characters long" aus (wobei X dem Wert der Mindestlänge entspricht).
  • Wenn beide Prüfungen erfolgreich sind, gib "Credentials are valid" aus.

Verwende einen try...catch-Block, um die Funktion mit den bereitgestellten Eingaben aufzurufen. Fange im catch-Block gezielt die InvalidCredentialsException ab und gib "Validation error: " gefolgt von der Ausnahmemeldung mithilfe der Methode getMessage() aus.

Eingabeformat:

  • Erste Zeile: Eine Zeichenkette, die den Benutzernamen darstellt (Beispiel: john_doe oder eine leere Zeichenkette)
  • Zweite Zeile: Eine Zeichenkette, die das Passwort darstellt (Beispiel: pass123)
  • Dritte Zeile: Eine Ganzzahl, die die Mindestlänge des Passworts darstellt (Beispiel: 8)

Erwartete Ausgabe:

  • Wenn die Zugangsdaten gültig sind: Credentials are valid
  • Wenn der Benutzername leer ist: Validation error: Username cannot be empty
  • Wenn das Passwort zu kurz ist: Validation error: Password must be at least X characters long (wobei X der Mindestlänge entspricht)

Probier es selbst

<?php
// Eingabe lesen
$username = trim(fgets(STDIN));
$password = trim(fgets(STDIN));
$minLength = intval(fgets(STDIN));

// TODO: Schreiben Sie Ihren Code unten
// 1. Erstellen Sie die Klasse InvalidCredentialsException
// 2. Erstellen Sie die Funktion validateCredentials
// 3. Verwenden Sie einen try...catch-Block, um die Funktion aufzurufen und Ausnahmen zu behandeln

?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-PHP-Compiler