Je me demandais s'il y avait une meilleure façon de gérer le cas dans C où vous voulez quitter une fonction dès que vous rencontrez une erreur dans une série d'expressions. (dans ce cas, c'est une fonction qui renvoie une valeur NULL en cas d'erreur)Traitement des erreurs de court-circuit dans C
par exemple. dans un certain code C où ils ont essayé de court-circuiter la gestion des erreurs en combinant une série d'instructions avec AND (& &).
return doSomething() &&
doSomething2() &&
doSomething3() && ... ;
Cela me énerve puisque nous entasser tant
sur une ligne
dans une déclaration. Mais je suppose que l'alternative est
if (!(value = doSomething()))
return NULL;
if (!(value = doSomething2()))
return NULL;
etc
return value;
Mais qu'en est-évaluation des erreurs de court-circuit que je l'ai vu dans les scripts Perl et bash ..
int die(int retvalue) {
exit(retvalue);
}
.....
(value = doSomething()) || die(1);
(value = doSomething2()) || die(2);
(value = doSomething3()) || die(3);
return value;
Le principal problème avec ceci est que l'ERS doit être une expression de sorte que vous ne pouvez pas vraiment aller ou revenir de la fonction. Est-ce que quelqu'un trouverait cela de valeur ou est-ce trop limité?
edit: Je suppose que j'aurais dû inclure des nouvelles lignes dans le premier exemple. Le problème est que vous devez faire attention si vous décidez d'ajouter une autre expression au milieu.
Je ne sais pas pourquoi. Votre réponse était assez raisonnable. –
Juste une note rapide, @devinb, votre édition fait tous les trois qui n'est pas la même que la version court-circuitée dans la question (ou votre original). Bien s'il n'y a pas d'effets secondaires (ou si les performances ne sont pas affectées) mais cela ne peut pas être garanti. – paxdiablo
Merci pax, je l'ai réparé. – DevinB