Relancer une exception dans un bloc « catch »
Salut à tous,
J'aimerais pouvoir relancer une exception pour réitérer une saisie dans un bloc catch (je ne sais pas si c'est possible mais ça me faciliterais grandement la tâche).
Ci-dessous la fonction dans laquelle j'aimerais relancer l'exception pour réitérer la saisie.
Code:
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 41 42 43
| istream& operator>> (istream& flux, Timing &P)
{
char pause = 0;
char *J = new char[50];
Temps Heure;
Temps Duree;
cout << "Jour: ";
flux >> J;
try
{
P.setJour(J);
}
catch(InvalidJourException const &i)
{
do
{
cout << "Jour: ";
flux >> J;
if(strcmp(J, "Lundi") != 0 && strcmp(J, "Mardi") != 0 && strcmp(J, "Mercredi") != 0 && strcmp(J, "Jeudi") != 0 && strcmp(J, "Vendredi") != 0 && strcmp(J, "Samedi") != 0 && strcmp(J, "Dimanche") != 0)
cout << "Saisie invalide" << endl;
} while(strcmp(J, "Lundi") != 0 && strcmp(J, "Mardi") != 0 && strcmp(J, "Mercredi") != 0 && strcmp(J, "Jeudi") != 0 && strcmp(J, "Vendredi") != 0 && strcmp(J, "Samedi") != 0 && strcmp(J, "Dimanche") != 0);
P.setJour(J);
}
try
{
flux >> Heure;
flux >> Duree;
}
catch(InvalidTempsException const &t)
{
flux >> Heure;
flux >> Duree;
}
P.setHeure(Heure);
P.setDuree(Duree);
return flux;
} |
(le deuxième catch)
Ci-dessous, la fonction qui lance l'exception en cas d'erreur de saisie..
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| istream& operator>> (istream& flux, Temps &t)
{
int h,m;
cout << "Heure: ";
flux >> h;
if(h > 23)
throw InvalidTempsException("Saisie Invalide");
cout << "Minute: ";
flux >> m;
if(m > 59)
throw InvalidTempsException("Saisie Invalide");
t.setHeure(h);
t.setMinute(m);
return flux;
} |
J'aimerais donc que dans le catch je puisse faire une sorte de boucle qui relancerais l'exception et qui me permettrais de saisir à nouveau mes valeurs pour ne pas devoir refaire mes conditions dans le catch.
J'espère avoir été assez clair et que quelqu'un pourra m'aider.