Menu
Coddy logo textTech

Das 'throw'-Schlüsselwort

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 50 von 56.

Manchmal musst du signalisieren, dass in deinem eigenen Code ein Fehler aufgetreten ist, statt einfach nur von anderen Funktionen ausgelöste Ausnahmen abzufangen. Mit dem Schlüsselwort throw kannst du manuell eine Ausnahme auslösen, wenn dein Programm ein Problem erkennt.

Du kannst verschiedene Arten von Werten als exceptions auslösen – Ganzzahlen, Zeichenketten oder sogar benutzerdefinierte Objekte. Hier ist die grundlegende Syntax:

if (someErrorCondition) {
    throw "Error message";  // Wirft ein String-Literal
}

Wenn du throw verwendest, beendet das Programm sofort die Ausführung der aktuellen Funktion und sucht nach einem catch-Block, der den geworfenen Wert verarbeiten kann. Dies ist besonders nützlich, um input zu validieren oder Bedingungen zu überprüfen, die während der normalen Programmausführung nicht auftreten sollten.

Hier ist ein praktisches Beispiel dafür, wie beim Erkennen ungültiger Eingaben eine Ausnahme ausgelöst wird:

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

Das Schlüsselwort throw gibt dir Kontrolle darüber, wann und wie Fehler in deinen Programmen gemeldet werden, und macht deine Funktionen robuster und vorhersehbarer im Umgang mit ungültigen Bedingungen.

challenge icon

Aufgabe

Einfach

Erstelle ein Programm, das die Eingabevalidierung mithilfe des Schlüsselworts throw implementiert, um Ausnahmen manuell auszulösen, wenn ungültige Bedingungen erkannt werden. Diese Herausforderung testet dein Verständnis dafür, wie du throw verwendest, um in deinen eigenen Funktionen Fehler zu signalisieren.

Die folgenden Eingaben werden bereitgestellt:

  • Eine Zeichenkette username, die den von einem Benutzer gewählten Benutzernamen darstellt (diese Zeile kann leer sein)
  • Eine Ganzzahl age, die das Alter des Benutzers darstellt

Dein Programm sollte:

  1. Eine Funktion namens validateUser erstellen, die eine Zeichenkette und eine Ganzzahl als Parameter entgegennimmt
  2. Innerhalb der Funktion überprüfen, ob der Benutzername leer ist (die Länge 0 hat)
  3. Wenn der Benutzername leer ist, die Zeichenkette throw mit "Username cannot be empty" auslösen
  4. Überprüfen, ob das Alter kleiner als 13 ist
  5. Wenn das Alter kleiner als 13 ist, die Zeichenkette throw mit "Age must be at least 13" auslösen
  6. Wenn beide Validierungen erfolgreich sind, "User validation successful" ausgeben
  7. In der Hauptfunktion validateUser mit den Eingabewerten aufrufen
  8. Einen try-Block verwenden, um die Funktion aufzurufen, und einen catch-Block, um ausgelöste Zeichenkettenausnahmen zu behandeln

Verwende das folgende exakte Ausgabeformat:

Bei erfolgreicher Validierung:

User validation successful

Bei Validierungsfehlern:

Validation error: [error_message]

Denke daran: Wenn du throw verwendest, beendet das Programm sofort die Ausführung der aktuellen Funktion und sucht nach einem passenden catch-Block. Der catch-Block sollte den Typ const char* angeben, um die ausgelösten Zeichenkettenliterale zu behandeln. Wenn die erste Validierung fehlschlägt, löst die Funktion eine Ausnahme aus und fährt nicht mit der Überprüfung der zweiten Bedingung fort.

Probier es selbst

#include <iostream>
#include <string>
using namespace std;

int main() {
    // Eingabe lesen
    string username;
    int age;
    getline(cin, username);
    cin >> age;
    
    // TODO: Schreibe deinen Code hier
    // Erstelle die validateUser-Funktion und implementiere die Validierungslogik
    // Verwende try-catch-Blöcke, um Ausnahmen zu behandeln
    
    return 0;
}
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-C++-Compiler