IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Lancement d'une erreur de type ArithmeticException


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut Lancement d'une erreur de type ArithmeticException
    Bonjour,

    On sait que lorsqu'une division par 0 est effectuée, cela déclenche automatiquement la création d'une instance de la classe ArithmeticException.

    Mais si l'on divise par 0.0 cela ne provoque pas automatiquement la création d'une instance de la classe
    ArithmeticException.
    J'ai donc forcé la chose pour que si une division par le nombre 0.0 se produit, cela provoque la création d'une d'une instance de la classe ArithmeticException.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
     if(operateur.equals("/"))
                  {
                          try{
                        	  if(Double.parseDouble(ecran.getText())==0.0){
                        		  throw new ArithmeticException();
                        		  }// fin de if  if(Double.parseDouble(ecran.getText())==0.0)
     
     
     
     
    			       chiffre = chiffre / Double.parseDouble(ecran.getText());
                                  ecran.setText(String.valueOf(chiffre));
                          }// fin de try 
    			catch(ArithmeticException e){
    				System.out.println("Une division par le nombre  0 n'est pas permise");
                                  ecran.setText("0");
                          }// fin de catch
                  }// fin de if(operateur.equals("/"))
    Est-il cohérent et acceptable de forcer la création d'une instance de la classe ArithmeticException ou est-il préférable, dans ce cas précis, de simplement forcer la création d'une instance de la classe Exception ou d'une classe que j'aurais créée , si on s'en tient que par définition , une instance de la classe ArithmeticException est créée uniquement si l'on divise un nombre par le nombre entier 0 et non pas par le nombre réél 0.0.

    Merci beaucoup à vous de votre réponse.

    Cordialement.

    new_wave
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Si ton "chiffre" est un Double, alors la division par un zéro entier n'est pas possible : ce zéro sera casté d'abord en Double.
    Plutôt que de tester la valeur du diviseur, je te conseille d'effectuer l'opération puis d'utiliser la méthode Double.isInfinite. Elle renverra true si tu divises par "0.0" ou "-0.0" (ce qui n'est pas la même chose).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par new_wave Voir le message
    Est-il cohérent et acceptable de forcer la création d'une instance de la classe ArithmeticException ou est-il préférable, dans ce cas précis, de simplement forcer la création d'une instance de la classe Exception ou d'une classe que j'aurais créée , si on s'en tient que par définition , une instance de la classe ArithmeticException est créée uniquement si l'on divise un nombre par le nombre entier 0 et non pas par le nombre réél 0.0.
    Une ArithmeticException peut être créée pour d'autres raisons. La seule que je connaisse est l'appel de BigDecimal.setScale().

    Il n'y a, à mon avis, pas de raison de se priver de lancer une classe d'Exception qui est là pour ça.
    Je me demande juste si, dans ton cas, tu as bien un cas de ArithmeticException et pas plutôt de IllegalArgumentException.
    Après tout, un double divisé par 0.0 ne fait absolument pas d'erreur arithmétique, ça renvoie simplement un double de valeur Double.POSITIVE_INFINITY ou Double.NEGATIVE_INFINITY ou Double.NaN suivant les cas. C'est toi qui a décidé que ça ne te plaît pas, mais l'erreur n'est pas arithmétique.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut lancement d'une arithmetic exception
    Bonjour,

    Je vous remercie de votre réponse.
    C'est exact, lorsque je divise un double par 0.0 j'obtiens un resultat à m'écran :INFINITY.
    J'ai donc bien ma réponse: j'ai décidé que cela ne me plaît pas et il ne s'agit pas d'une ArithmeticException: il est donc préférable de créer une instance de la classe Exception et non pas de la classe ArithmeticException.
    Etes-vous d'accord là dessus.

    Vous remerciant de votre réponse
    Cordialement.
    new_wave
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/05/2010, 14h09
  2. Réponses: 0
    Dernier message: 30/03/2009, 15h51
  3. Réponses: 2
    Dernier message: 23/01/2008, 22h10
  4. Problème avec une erreur de type [DCC Erreur]
    Par colorid dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2007, 20h04
  5. Zone de texte vide occasionne une erreur de type
    Par charleshbo dans le forum Access
    Réponses: 1
    Dernier message: 13/04/2006, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo