Exception C++
Exception C++
Lors de l'exécution de code C++, différentes erreurs peuvent se produire : erreurs de codage faites par le programmeur, erreurs dues à une mauvaise saisie ou à d'autres choses imprévisibles.
Lorsqu'une erreur se produit, C++ s'arrête normalement et génère un message d'erreur. Le terme technique pour cela est : C++ lèvera une exception (lancera une erreur).
C++ essayer et attraper
La gestion des exceptions en C++ consiste en trois mots-clés : try
, throw
et catch
:
L' try
instruction vous permet de définir un bloc de code à tester pour les erreurs pendant son exécution.
Le mot- throw
clé lève une exception lorsqu'un problème est détecté, ce qui nous permet de créer une erreur personnalisée.
L' catch
instruction vous permet de définir un bloc de code à exécuter, si une erreur se produit dans le bloc try.
Les mots-clés try
et catch
vont par paires :
Exemple
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Considérez l'exemple suivant :
Exemple
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int
myNum) {
cout << "Access denied - You must be at least 18 years
old.\n";
cout << "Age is: " << myNum;
}
Exemple expliqué
Nous utilisons le try
bloc pour tester du code : si la age
variable est inférieure à 18
, nous créerons throw
une exception et la gérerons dans notre catch
bloc.
Dans le catch
bloc, nous attrapons l'erreur et faisons quelque chose à ce sujet. L' catch
instruction prend un paramètre : dans notre exemple, nous utilisons une int
variable ( myNum
) (car nous lançons une exception de int
type dans le try
bloc ( age
)), pour afficher la valeur de age
.
Si aucune erreur ne se produit (par exemple, si age
est 20
au lieu de 15
, ce qui signifie qu'il sera supérieur à 18), le catch
bloc est sauté :
Exemple
int age = 20;
Vous pouvez également utiliser le mot- throw
clé pour générer un numéro de référence, comme un numéro/code d'erreur personnalisé à des fins d'organisation :
Exemple
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
Gérer tout type d'exceptions (...)
Si vous ne connaissez pas le throw
type utilisé dans le try
bloc, vous pouvez utiliser la syntaxe "trois points" ( ...
) à l'intérieur du catch
bloc, qui gérera tout type d'exception :
Exemple
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years
old.\n";
}