J'ai écrit un attribut sélecteur de méthode d'action personnalisé qui possède trois propriétés code> BOOL code>. Il est invalide pour les trois d'entre eux d'être Certains Code pertinent: P> faux code>. Au moins l'un d'entre eux doit être
vrai code>. Lorsque
isvalidforrequest code> est exécuté, je vérifie que au moins l'un d'entre eux est
vrai code>. Mais si aucun n'est, quelle exception dois-je jeter?
[MyCustom(Prop1 = false, Prop2 = false, Prop3 = false)]
3 Réponses :
Je lancerais probablement invalidoPerationException code>, car l'opération n'est pas valide pour l'état actuel de l'objet. p>
J'étais plus dans une sorte de InvalidObjectStateException code> s'il y avait ... mais
InvalidOperationException code> semble bien. Voyons s'il y a des idées autres.
Ceci est l'exception utilisée le plus souvent par la bibliothèque .NET, dans des cas comme celui-ci (voir Serialport.Readchal lorsque le port n'est pas ouvert, par exemple).
J'irais aussi avec InvalidOperationException code>, bien que chaque fois que je l'utilise, je me demande toujours s'il y a quelque chose de mieux!
Vous pouvez essayer avec ArgumentException < / a> Si ces propriétés ont été chargées à partir de l'entrée de l'utilisateur ... ou si vous pouvez implémenter votre propre Exception personnalisée à lancer. P>
Cela dépend vraiment de la définition de ces propriétés. P>
Selon mon exemple. Ils ne sont pas définis au moyen de paramètres de constructeur. Mon constructeur est sans paramètre car je n'ai pas besoin de paramètres réellement.
argumentException code> ne doit pas être utilisé à moins que le problème réside avec un argument à la méthode actuelle. "L'exception qui est lancée lorsque l'un des arguments fournis à une méthode n'est pas valide."
Oui, mais je voulais dire s'ils venaient de l'entrée de l'utilisateur ou sont des champs calculés ou autre chose. Le type de l'exception donne au programmeur (puis l'utilisateur) une idée du contexte que le problème se pose. Alors, que signifie que les propriétés signifient est importante pour lancer le bon type d'exception.
lancer une exception avec votre message personnalisé spécifique à l'aide de
throw new Exception("Custom Error Message");
Lancer une exception de classe de base n'est pas recommandée. Si vous voulez aller cette route, déclarez-vous et lancez une exception personnalisée.