Menu
Coddy logo textTech

Le mot-clé 'throw'

Fait partie de la section Logique et Flux du Journey C++ de Coddy. Leçon 50 sur 56.

Parfois, vous devez signaler qu’une erreur s’est produite dans votre propre code, plutôt que de simplement intercepter les exceptions levées par d’autres fonctions. Le mot-clé throw vous permet de déclencher manuellement une exception lorsque votre programme détecte un problème.

Vous pouvez lancer différents types de valeurs comme exceptions — des entiers, des chaînes ou même des objets personnalisés. Voici la syntaxe de base :

if (someErrorCondition) {
    throw "Error message";  // Lance une chaîne littérale
}

Lorsque vous utilisez throw, le programme cesse immédiatement d’exécuter la fonction actuelle et cherche un bloc catch capable de gérer la valeur levée. Cela est particulièrement utile pour valider les entrées ou vérifier des conditions qui ne devraient pas se produire pendant l’exécution normale du programme.

Voici un exemple pratique de levée d'une exception lors de la détection d'une entrée non valide :

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

Le mot-clé throw vous permet de contrôler quand et comment les erreurs sont signalées dans vos programmes, ce qui rend vos fonctions plus robustes et prévisibles lorsqu’elles traitent des conditions invalides.

challenge icon

Défi

Facile

Créez un programme qui implémente la validation des entrées à l’aide du mot-clé throw afin de déclencher manuellement des exceptions lorsque des conditions invalides sont détectées. Ce défi vous permettra de tester votre compréhension de l’utilisation de throw pour signaler des erreurs dans vos propres fonctions.

Les entrées suivantes seront fournies :

  • Une chaîne username représentant le nom d’utilisateur choisi par l’utilisateur (cette ligne peut être vide)
  • Un entier age représentant l’âge de l’utilisateur

Votre programme doit :

  1. Créer une fonction nommée validateUser qui prend une chaîne et un entier comme paramètres
  2. À l’intérieur de la fonction, vérifier si le nom d’utilisateur est vide (sa longueur est égale à 0)
  3. Si le nom d’utilisateur est vide, throw la chaîne "Username cannot be empty"
  4. Vérifier si l’âge est inférieur à 13
  5. Si l’âge est inférieur à 13, throw la chaîne "Age must be at least 13"
  6. Si les deux validations réussissent, afficher "User validation successful"
  7. Dans la fonction principale, appeler validateUser avec les valeurs d’entrée
  8. Utiliser un bloc try pour appeler la fonction et un bloc catch pour gérer les exceptions de type chaîne lancées

Utilisez le format de sortie exact suivant :

En cas de validation réussie :

User validation successful

En cas d’erreurs de validation :

Validation error: [error_message]

N’oubliez pas que lorsque vous utilisez throw, le programme cesse immédiatement d’exécuter la fonction actuelle et recherche un bloc catch correspondant. Le bloc catch doit spécifier le type const char* pour gérer les littéraux de chaîne lancés. Si la première validation échoue, la fonction lancera une exception et ne poursuivra pas la vérification de la deuxième condition.

Essayez vous-même

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

int main() {
    // Lire l'entrée
    string username;
    int age;
    getline(cin, username);
    cin >> age;
    
    // TODO: Écrivez votre code ici
    // Créez la fonction validateUser et implémentez la logique de validation
    // Utilisez des blocs try-catch pour gérer les exceptions
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Compilateur C++ en ligne