Menu
Coddy logo textTech

Eine Exception auslösen

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 42 von 65.

Manchmal müssen Sie Ihre eigenen Fehlerbedingungen in Ihrem Code erstellen. Das Schlüsselwort throw ermöglicht es Ihnen, manuell eine Ausnahme auszulösen, wenn Ihr Programm auf eine Situation stößt, die nicht fortgesetzt werden darf.

Wenn Sie eine Exception mit throw auslösen, sagen Sie im Grunde: „Stoppt alles – hier stimmt etwas nicht.“ Dies ist nützlich, um Eingaben zu validieren oder Regeln in Ihren Funktionen durchzusetzen. Sie können eine einfache String-Nachricht auslösen oder spezifischere Exception-Typen erstellen.

void checkAge(int age) {
  if (age < 0) {
    throw "Age cannot be negative!";
  }
  print("Age is valid: $age");
}

In diesem Beispiel wirft die Funktion sofort eine Exception mit einer aussagekräftigen Nachricht, wenn jemand versucht, ein negatives Alter zu übergeben. Dies verhindert, dass der Rest der Funktion mit ungültigen Daten ausgeführt wird, was Ihren Code zuverlässiger und einfacher zu debuggen macht.

Das Auslösen von Exceptions ist besonders wertvoll in Funktionen, die ihre Eingaben validieren müssen, bevor sie mit wichtigen Operationen fortfahren.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das Benutzerkontoinformationen validiert, indem es benutzerdefinierte Validierungsfunktionen implementiert, die Ausnahmen auslösen, wenn ungültige Daten erkannt werden. Ihr Programm sollte mehrere Kontofelder überprüfen und spezifische Fehlermeldungen für verschiedene Validierungsfehler ausgeben.

  1. Lesen Sie eine String-Eingabe ein, die den Benutzernamen darstellt
  2. Lesen Sie eine String-Eingabe ein, die die E-Mail-Adresse darstellt
  3. Lesen Sie eine String-Eingabe ein, die das Alter als String darstellt
  4. Lesen Sie eine String-Eingabe ein, die das Passwort darstellt
  5. Erstellen Sie eine Funktion namens validateUsername, die prüft, ob der Benutzername gültig ist:
    • Wenn der Benutzername leer ist oder weniger als 3 Zeichen hat, lösen Sie die Ausnahme aus: "Username must be at least 3 characters long"
    • Wenn der Benutzername Leerzeichen enthält, lösen Sie die Ausnahme aus: "Username cannot contain spaces"
    • Wenn die Validierung erfolgreich ist, geben Sie aus: "Username validation passed"
  6. Erstellen Sie eine Funktion namens validateEmail, die prüft, ob die E-Mail gültig ist:
    • Wenn die E-Mail nicht das @-Symbol enthält, lösen Sie die Ausnahme aus: "Email must contain @ symbol"
    • Wenn die E-Mail keinen Punkt . nach dem @-Symbol enthält, lösen Sie die Ausnahme aus: "Email must contain a valid domain"
    • Wenn die Validierung erfolgreich ist, geben Sie aus: "Email validation passed"
  7. Erstellen Sie eine Funktion namens validateAge, die prüft, ob das Alter gültig ist:
    • Konvertieren Sie den Alters-String mit int.parse() in eine Ganzzahl
    • Wenn das Alter kleiner als 13 ist, lösen Sie die Ausnahme aus: "Age must be at least 13 years old"
    • Wenn das Alter größer als 120 ist, lösen Sie die Ausnahme aus: "Age must be realistic (under 120)"
    • Wenn die Validierung erfolgreich ist, geben Sie aus: "Age validation passed"
  8. Erstellen Sie eine Funktion namens validatePassword, die prüft, ob das Passwort gültig ist:
    • Wenn das Passwort kürzer als 8 Zeichen ist, lösen Sie die Ausnahme aus: "Password must be at least 8 characters long"
    • Wenn die Validierung erfolgreich ist, geben Sie aus: "Password validation passed"
  9. Rufen Sie jede Validierungsfunktion nacheinander auf und behandeln Sie alle auftretenden Ausnahmen
  10. Zeigen Sie die Ergebnisse in dem unten gezeigten exakten Format an

Wenn die Eingaben beispielsweise "john", "john@email.com", "25", "password123" sind, sollte Ihr Programm Folgendes ausgeben:

Account Validation System
=========================
Validating username: john
Username validation passed
Validating email: john@email.com
Email validation passed
Validating age: 25
Age validation passed
Validating password: password123
Password validation passed
=========================
All validations passed successfully!
Account created for user: john

Wenn die Eingaben "jo", "john@email.com", "25", "password123" sind, sollte Ihr Programm Folgendes ausgeben:

Account Validation System
=========================
Validating username: jo
Validation Error: Username must be at least 3 characters long
Account creation failed due to validation errors

Wenn die Eingaben "john doe", "johnemail.com", "12", "pass" sind, sollte Ihr Programm Folgendes ausgeben:

Account Validation System
=========================
Validating username: john doe
Validation Error: Username cannot contain spaces
Account creation failed due to validation errors

Ihr Programm muss jede Validierungsfunktion in der exakten Reihenfolge aufrufen: Benutzername, E-Mail, Alter, dann Passwort. Stoppen Sie die Validierung und zeigen Sie die Fehlermeldung an, sobald eine Validierung fehlschlägt. Verwenden Sie das Schlüsselwort throw, um Ausnahmen mit den oben gezeigten spezifischen Fehlermeldungen manuell auszulösen. Jede Validierungsfunktion sollte ihr jeweiliges Feld überprüfen und eine Ausnahme auslösen, wenn die Validierung fehlschlägt, oder eine Erfolgsmeldung ausgeben, wenn sie erfolgreich ist.

Spickzettel

Das Schlüsselwort throw ermöglicht es Ihnen, Ausnahmen manuell auszulösen, wenn Ihr Programm auf ungültige Bedingungen stößt:

void checkAge(int age) {
  if (age < 0) {
    throw "Age cannot be negative!";
  }
  print("Age is valid: $age");
}

Wenn Sie eine Ausnahme mit throw auslösen, stoppt das Programm die Ausführung an diesem Punkt. Dies ist nützlich für die Validierung von Eingaben und die Durchsetzung von Regeln in Funktionen, wodurch Ihr Code zuverlässiger und einfacher zu debuggen wird.

Sie können einfache String-Nachrichten auslösen oder spezifischere Ausnahmetypen erstellen. Das Auslösen von Ausnahmen ist besonders wertvoll in Validierungsfunktionen, die Eingaben prüfen müssen, bevor sie mit wichtigen Operationen fortfahren.

Probier es selbst

import 'dart:io';

void main() {
  // Eingabe lesen
  String? username = stdin.readLineSync();
  String? email = stdin.readLineSync();
  String? age = stdin.readLineSync();
  String? password = stdin.readLineSync();
  
  print("Account Validation System");
  print("=========================");
  
  try {
    // TODO: Erstelle die Funktion validateUsername und rufe sie hier auf
    print("Validating username: $username");
    
    // TODO: Erstelle die Funktion validateEmail und rufe sie hier auf
    print("Validating email: $email");
    
    // TODO: Erstelle die Funktion validateAge und rufe sie hier auf
    print("Validating age: $age");
    
    // TODO: Erstelle die Funktion validatePassword und rufe sie hier auf
    print("Validating password: $password");
    
    // TODO: Wenn alle Validierungen erfolgreich sind, Erfolgsmeldungen ausgeben
    print("=========================");
    print("All validations passed successfully!");
    print("Account created for user: $username");
    
  } catch (e) {
    // TODO: Ausnahmen behandeln und Fehlermeldung ausgeben
    print("Validation Error: $e");
    print("Account creation failed due to validation errors");
  }
}

// TODO: Schreibe deine Validierungsfunktionen hier
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