Si une fonction a 2 arguments et que les deux produisent des exceptions, dans quel ordre les auriez-vous levés et où les définiriez-vous?Ordre d'exception lorsque multiple est possible
Ceci est apparu lorsque j'écrivais un test pour une fonction qui prendrait un répertoire sur disque et le comprimerait dans un fichier. Par exemple:
void Compress(string dirPath, string filePath);
Je n'ai pas encore écrit la fonction et je mets mes tests en place. Le fait est que, si le chemin de répertoire n'existe pas, j'aurais une exception pour un répertoire manquant et si le fichier avait des permissions d'écriture comme cela que je l'ai fait pour montrer une exception. Cependant, que se passe-t-il si les deux chemins provoquent des exceptions? Est-ce que je lancerais le premier, le second, un autre troisième, ou est-ce un état inconnu? Nous avions également envisagé d'avoir une seule exception pour dire "Quelque chose a cassé", mais le message serait différent dans chaque cas, donc cela n'aide pas vraiment. J'ai pensé à plusieurs façons de contourner le problème, comme lancer toujours en fonction du traitement de gauche à droite des arguments, ou en indiquant "Si dirPath est invalide, X est levé sinon si filePath est invalide, alors Y est levé" et plaçant cela avec la définition d'interface de sorte que celui qui l'implémente devrait (espérons-le) suivre cette spécification.
Je me demandais simplement quelle approche adopteraient les gens à ce problème.
Pour référence, ceci est en C# mais je ne pense pas que ce soit un problème spécifique à la langue.
Je pense que c'est surtout la préférence, mais si c'était moi, je mettrais dans l'ordre le plus logique pour moi. Dans ce cas, vous voulez compresser un dossier, donc vous devez d'abord le chercher et s'il y a un problème, vous ne devriez pas vous préoccuper du problème avec le fichier de destination, car vous n'y arriverez même pas. –
@kylep: complètement d'accord; vois ma réponse. –