Fermer

mai 31, 2019

Lancer ArgumentException et InvalidOperationException


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