Bien boujour à tous,
Je débute en C++, et j'aimerais faire un Try{} Catch(){}, mais je n'arrive pas à trouver d'informations concluantes sur mon problème...
Voici le principe de ce que je veux faire :
Une invite apparait sur un terminal. L'utilisateur répond à la question posée.
exemple:.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2ans=21 _
Dans mon code, et dans le cas où l'utilisateur rentre effectivement un nombre, je souhaite rentrer cette valeur dans une variable de type int.
J'ai pensé à celà:.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3int ans; ... std::cin >> ans;
Si jamais la réponse n'est PAS du bon type, je souhaite réafficher l'invite. Voici le code auquel j'ai pensé :
Malheureusement, ce code n'a pas l'air de lever d'exeptions, et on ne passe apparement pas par le block catch(...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 int ans; bool pass=false; while(!pass) { try { std::cout << "INT"; std::cin >> ans; pass=true; } catch(...) { pass=false; } }
Je n'ai pas de "plantage" apparent, et j'obtiens des résultats très étranges dans le suite de l'execution (par exemple affichage de tous les "std::cout" suivant).
Je ne comprend pas trop ce qui se passe, étant donné que mon programme cesse de s'exectuer normalement, mais sans lever d'exeption...
Voici le code exact de mon programme de test, ainsi que les résultats :
Résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #include <iostream> using namespace std; int main(void) { bool pass=false; int ans; string ans2; bool ans3; double ans4; char ans5[50]; while(!pass) { try { cout << "INT"; cin >> ans; pass=true; cout << "OK"; } catch(...) { pass=false; cout << "ERREUR!!!"; } cout << pass; } cout << "STRING"; cin >> ans2; cout << "BOOL"; cin >> ans3; cout << "DOUBLE"; cin >> ans4; cout << "CHAR[]"; cin >> ans5; return 0; }
Quelqu'un a-t-il une idée de ce qui se passe ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 name@machine:~$ ./Test INT=m //ma réponse (à un type attendu int): un caractère 'm' 1OKSTRING=BOOL=DOUBLE=CHAR[]=name@machine:~$
Merci d'avance![]()
Partager