7
votes

Quelle exception doit être lancée?

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 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?

Certains Code pertinent: P>

[MyCustom(Prop1 = false, Prop2 = false, Prop3 = false)]


0 commentaires

3 Réponses :


8
votes

Je lancerais probablement invalidoPerationException , car l'opération n'est pas valide pour l'état actuel de l'objet.


3 commentaires

J'étais plus dans une sorte de InvalidObjectStateException s'il y avait ... mais InvalidOperationException 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 , bien que chaque fois que je l'utilise, je me demande toujours s'il y a quelque chose de mieux!



0
votes

3 commentaires

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 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.



-1
votes

lancer une exception avec votre message personnalisé spécifique à l'aide de

throw new Exception("Custom Error Message");


1 commentaires

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.