Considérons un peu artificielle C++ Code:C++ avec succès `try` branche
int i = 0;
try { someAction(); }
catch(SomeException &e) { i = -1; }
i = 1;
... // code that uses i
Je veux que ce code pour assigner -1
à i
en cas de someAction()
throws Exception et assignez 1
au cas où il n'y avait pas exception. Comme vous pouvez le voir maintenant ce code est faux parce que i
finit toujours par devenir 1
. Bien sûr, nous pouvons faire quelques solutions de contournement truc comme:
int i = 0;
bool throwed = false;
try { someAction(); }
catch(SomeException &e) { throwed = true; }
i = throwed ? -1 : 1;
... // code that uses i
Ma question est: est-il quelque chose en C++ comme « branche d'essai avec succès », où je fais des actions au cas où il n'y avait pas tout lancers francs dans le bloc d'essai? Quelque chose comme:
int i = 0;
try { someAction(); }
catch(SomeException &e) { i = -1; }
nocatch { i = 1; }
... // code that uses i
Certes, il n'y a pas nocatch
en C++ mais peut-être il y a une solution de contournement belle commune?
Le "nocatch" est appelé "try". – molbdnilo
Vous pouvez avoir plusieurs lignes de code dans un bloc try ou catch. – AndyG
Une façon consiste à initialiser 'i' à' 1'. C'est le plus simple. Une autre méthode consiste à placer votre code dans une fonction (par exemple un lambda) et à renvoyer la valeur «i». –