comment remplacer un goto ? [Gestion d'erreur] - C - Programmation
Marsh Posté le 02-06-2011 à 17:51:14
Ben faudra faire un paquet de refactoring, et je doute que tu puisses automatiser ça. Je ferais un truc du genre :
Code :
|
Le truc, c'est de regrouper les initialisations/allocations qui nécessite un nettoyage explicite dans une instruction if. Si ça foire, tu nettoies dans le bloc contenant, puis en cascade ensuite. De cette manière, à la fin du traitement normal, ça va nettoyer tout comme il faut.
Ou alors faire comme tu as fais: si ça foire à un endroit, tu te redirige le code au plus vite dans une partie qui va tout nettoyer.
Marsh Posté le 02-06-2011 à 14:31:13
Bonjour,
Je me balade assez souvent sur le site pour trouver des solutions à mes divers problèmes de programmation (surtout en C++ en fait) Mais j'avoue que là, bien que j'ai trouvé 2 ou 3 pistes, je n'arrive pas à faire ce que je voudrais et devrais faire... j'ai une super gestion d'erreur, sauf que celle-ci passe par un "goto", ce qui, dans ma section, nous est interdit du à la rupture de séquence... du coup j'ai essayé de remplacer cette gestion d'erreur par une fonction, mais, je sais pas pourquoi, j'arrive pas à trouver comment faire, ça change ma logique, ou ça appelle des fonctions qui ne me viennent pas à l'esprit... j'en sais rien. Si vous avez des idées elles sont les bienvenues...
Voici mon extrait de code le plus simple (j'ai une bonne vingtaine de sources dans le même genre si ça vous intéresse , il faut que je les corriges tous...).
Donc vous l'aurez compris, à chaque ligne je test ce que me renvoie la fonction, et je trouverai idiot de recopier entièrement tout mon code de gestion d'erreur à chaque ligne...
Merci d'avance !
Message édité par gilou le 02-06-2011 à 18:47:08