Les Erreurs en C++

Introduction aux Erreurs en C++

En C++, les messages d'erreur et leurs différentes typologies jouent un rôle crucial dans la détection et le débogage des problèmes au sein du code. Les erreurs peuvent être identifiées avant, pendant ou après la compilation et l'exécution du programme. Étant donné la diversité des erreurs possibles, celles-ci sont regroupées en catégories spécifiques.

Erreurs de Syntaxe

Les erreurs de syntaxe se produisent lorsqu'il existe une erreur dans la syntaxe du code. Par exemple :

int num = 28 // Erreur : point-virgule manquant

Erreurs de Lien

Une erreur de lien, appelée aussi erreur de linker, survient lorsque le fichier exécutable du programme ne peut pas être créé. Cela arrive lorsque le linker ne parvient pas à combiner tous les fichiers objets en un programme exécutable. Un exemple courant d'erreur de lien est lorsque la fonction peopleReadingThis() est déclarée mais jamais définie, ce qui entraîne une erreur lors de son appel :

int person = 1;
string peopleReadingThis(int);
peopleReadingThis(person); // Erreur : définition attendue

Bien que la variable person soit un argument valide pour la fonction, son corps n'ayant jamais été défini, cela cause une erreur.

Erreurs d'Exécution

Une erreur d'exécution est celle qui se produit après l'exécution réussie du programme. Elle peut se produire lorsqu'il y a une utilisation excessive de la mémoire :

int people = 293049858920384839904; // Erreur : débordement

Ou encore, lorsque l'on tente de diviser par zéro :

int divideByZero = 22/0; // Erreur : division par zéro

Erreurs Logiques

Lorsqu'un programme ne produit pas les résultats attendus, il est souvent question d'une erreur logique. Ces erreurs ne peuvent être décelées que par le programmeur ou par un examinateur du code. Dans l'exemple suivant, le programme doit afficher "Quelqu'un lit ceci" lorsque person est supérieur ou égal à un. Autrement, il doit afficher "Pas une seule personne ne lit ceci" :

int person = 1;
if (person > 1) {
    std::cout << "Quelqu'un lit ceci";
} else {
    std::cout << "Pas une seule personne ne lit ceci";
}

Sortie :

Pas une seule personne ne lit ceci

Cet exemple ne génère aucune erreur, mais ne fournit pas la réponse correcte. Pour obtenir le bon résultat, il faut remplacer > par >=.

Conclusion

Comprendre les différents types d'erreurs en C++ est essentiel pour tout développeur. Cela aide non seulement à corriger les erreurs potentielles, mais aussi à écrire un code plus propre et plus efficace.