Lancer ArgumentException et InvalidOperationException
Une exception est levée lorsqu'une erreur est rencontrée dans une application en cours d'exécution, qu'il s'agisse d'un code incorrect ou d'une mauvaise entrée utilisateur. Cet article décrit quand et comment déclencher les types d'exception .NET standard ArgumentException et InvalidOperationException standard.
Des exceptions peuvent être levées par le code du moteur d'exécution ou de l'application. Cela peut être dû à un code incorrect, alors que d'autres fois, le problème est dû à une entrée utilisateur incorrecte qui n'a pas été prise en compte dans le code de l'application. Lorsque l'une de ces erreurs se produit, le système intercepte l'erreur et lève une exception.
Le processus de génération et de signalisation de l'erreur est appelé en lançant une exception . Cette opération est effectuée à l'aide du mot clé throw
suivi d'un nouvel exemple d'une classe dérivée de System.Exception
. Il existe des types d'exception standard fournis par le framework .NET que vous pouvez utiliser plutôt que de créer une exception personnalisée.
Dans cet article, je vais vous montrer pourquoi et comment utiliser les ArgumentException
et . ] InvalidOperationException
types qui, font partie des exceptions standard dans .NET.
Remarque: vous souhaitez en savoir plus sur les ArgumentNullException
et ArgumentOutOfRangeException
? Consultez mon article sur ces exceptions ici .
Utilisation du type d'exception InvalidOperationException
Le type d'exception InvalidOperationException
est levé lorsqu'un appel de méthode est invalide pour l'état actuel de l'objet. Cela peut être provoqué par le changement d'une collection en itérant ou par la conversion d'un Nullable
qui est nul pour son type sous-jacent. Nous pouvons également lancer ce type d'exception dans les cas où nous voulons signaler à notre application que l'opération demandée via un appel de méthode ne peut pas être effectuée car l'objet est dans un état non valide. Prenons un exemple: compte de classe
{
Compte public (chaîne firstName, chaîne lastName, balance int)
{
Prénom = prénom;
LastName = lastName;
Solde = solde;
}
chaîne publique FirstName {get; ensemble privé; }
chaîne publique LastName {get; ensemble privé; }
public int Balance {get; ensemble privé; }
Retrait public null (montant int)
{
si (montant> solde)
lancer la nouvelle InvalidOperationException ("fonds insuffisant");
Solde = solde - montant;
}
}
Le code ci-dessus montre une classe Account
avec des propriétés permettant de contenir les noms et le solde du propriétaire du compte. La méthode Retrait
déduit le montant du retrait du solde et, si le montant du retrait est supérieur au solde, elle lève une exception: la InvalidOperationException
. Lorsque l'exception est levée, elle annule la transaction de retrait et indique à l'application que le compte ne peut pas être débité de ce montant en raison d'un manque de fonds.
Utilisation de ArgumentException Exception
L'argumentException
type hérite de la classe System.SystemException
et doit être levé lorsqu'un argument de méthode reçoit une valeur d'argument non valide. Dans l'exemple de classe du compte Account
de la section précédente, gardons la méthode Withdraw
afin de ne pas autoriser un nombre inférieur à un ou une chaîne vide comme valeurs pour les noms. ] compte de classe
{
Compte public (chaîne firstName, chaîne lastName, balance int)
{
if (string.IsNullOrEmpty (prenom))
jette new ArgumentException ("Prénom n'est pas valide");
if (string.IsNullOrEmpty (lastName))
jette new ArgumentException ("LastName n'est pas valide");
Prénom = prénom;
LastName = lastName;
Solde = solde;
}
chaîne publique FirstName {get; ensemble privé; }
chaîne publique LastName {get; ensemble privé; }
public int Balance {get; ensemble privé; }
Retrait public null (montant int)
{
si (montant < 1)
throw new ArgumentException("Amount can't be less than 1",
nameof(amount));
if (amount > Solde)
lancer la nouvelle InvalidOperationException ("fonds insuffisant");
Solde = solde – montant;
}
}
Dans le code ci-dessus, nous avons utilisé l'exception ArgumentException
dans le constructeur pour empêcher l'initialisation d'un objet de compte avec des valeurs non valides. Nous lançons également l’exception ArgumentException
si la méthode Retrait
est appelée avec un montant inférieur à un. Nous avons utilisé le constructeur qui accepte un message d'exception et un deuxième paramètre pour indiquer le paramètre qui a provoqué l'exception.
C'est une conclusion
Nous avons envisagé de lancer des exceptions en C #, plus précisément en lançant l'argumentException
. et InvalidOperationException
qui font partie des exceptions standard dans .NET.
L'argumentException
est levé lorsqu'un argument de méthode reçoit une valeur d'argument non valide. L'exception InvalidOperationException
est émise dans les cas où l'échec de l'appel d'une méthode est dû à des raisons autres que des arguments non valides. L'exception InvalidOperationException
pouvant être levée dans de nombreuses circonstances, il est important de lire le message d'exception renvoyé par la propriété Message
. La façon dont vous gérez l'exception dépend de la situation spécifique. Le plus souvent, cependant, l'exception résulte d'une erreur du développeur et peut être anticipée et évitée.
Source link