Pour un constructeur avec un seul paramètre, est-il possible de créer une exception ArgumentNullException à l'intérieur du constructeur si le paramètre est null / empty? OU devrait-il être jeté dans la méthode qui utilise réellement l'argument? Merci.
Réponses
Trop de publicités?Oui, si elle est complètement essentiel de jeter l'exception. Vous ne devriez pas* lancer l'exception plus tard.
Toujours se souvenir de l' Échec des Premiers principes". Concept cours d'échouer maintenant, de sorte que vous ne perdez pas de temps à mettre au point ou d'une expérience inattendue de la fonctionnalité du système.
Sinon vous pouvez aussi jeter un ArgumentException pour "" et ArgumentNullException la valeur null. Dans les deux cas, assurez-vous de jeter un valide message d'Exception.
Toujours un bon article de référence pour la gestion des exceptions: la Bonne Gestion des exceptions des Règles de Pouce
Note de côté sur ce @Steve Michelotti a dit (parce que je suis un grand fan de CodeContracts)
Contract.Requires<ArgumentNullException>(inputParemeter!= null, "inputparameter cannot be null");
Contract.Requires<ArgumentException>(inputParemeter!= "", "inputparameter cannot be empty string");
sinon
Contract.Requires<ArgumentNullException>(!string.IsNullOrEmpty(inputParemeter), "inputparameter cannot be null or empty string");
Le lancer dans le constructeur convient: plusieurs classes du framework .NET le font. En outre, consultez les contrats de code pour cela.
D'après ce que cela ressemble, vous transmettez un paramètre au constructeur que la classe conservera pour pouvoir l'utiliser ultérieurement dans une autre méthode. Si vous n'utilisez pas réellement l'argument dans le constructeur, vous devriez probablement penser à déplacer l'argument pour qu'il devienne un paramètre de la méthode qui l'utilise réellement .