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 error aufgetreten ist, anstatt nur von anderen Funktionen ausgelöste exceptions abzufangen. Das Schlüsselwort throw ermöglicht es dir, manuell eine Ausnahme auszulö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 manuell Ausnahmen 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:

  • Ein string username, der den vom 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 einen string und eine Ganzzahl als Parameter entgegennimmt
  2. Innerhalb der Funktion prüfen, ob der username leer ist (die length beträgt 0)
  3. Wenn der username leer ist, den string "Username cannot be empty" mit throw auslösen
  4. Prüfen, ob das age kleiner als 13 ist
  5. Wenn das age kleiner als 13 ist, den string "Age must be at least 13" mit throw auslösen
  6. Wenn beide Validierungen erfolgreich sind, "User validation successful" ausgeben
  7. In der main-Funktion validateUser mit den Eingabewerten aufrufen
  8. Einen try-Block verwenden, um die Funktion aufzurufen, und einen catch-Block, um alle ausgelösten string exceptions 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 string literals zu behandeln. Wenn die erste Validierung fehlschlägt, löst die Funktion eine Ausnahme aus und fährt nicht mit der Prü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