Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1383 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Division par zéro en Java, exception non catchée ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Division par zéro en Java, exception non catchée ?

n°347866
robbystar
My baby got the bends
Posté le 31-03-2003 à 00:55:56  profilanswer
 

Y a quelque chose que je comprends pas je dois catcher une exception de division par zéro dans une de mes classes en java et je recontre un problème bizarre...
 

Code :
  1. int result;
  2. try {
  3.    result = 1 / 0;
  4. } catch (Exception e) {
  5.    System.out.println(e);
  6. }
  7. // là ok l'exception est catchée;


 
Par contre dans le cas ou le zéro est dans un variable...

Code :
  1. int result;
  2. int zero = 0;
  3. try {
  4.    result = 1 / zero;
  5. } catch (Exception e) {
  6.    System.out.println(e);
  7. }
  8. // là l'exception est plus catchée?!


 
... Là en effet si j'affiche le contenu de ma division j'obtiens "infinity"... C'est normal ça? :/
 
Merci de votre aide  :hello:
 
edit : je précise que j'ai le jdk 1.4.1_02 mais bon je pense pas que ça vienne de là :/


Message édité par robbystar le 31-03-2003 à 01:01:09
mood
Publicité
Posté le 31-03-2003 à 00:55:56  profilanswer
 

n°347889
souk
Tourist
Posté le 31-03-2003 à 03:46:31  profilanswer
 

bizarre, quand j'essaie ton code, j'ai une ArithmeticException
J'ai une JVM 1.4.1_01
 
serait-ce un bug de la 1.4.1_02

n°347963
bobuse
Posté le 31-03-2003 à 09:48:29  profilanswer
 

Moi j'ai essayé avec la 1.4.1_02, et ca marche :
 

Citation :


%java -version
java version "1.4.1_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_02-b06)
Java HotSpot(TM) Client VM (build 1.4.1_02-b06, mixed mode)  
%java test
java.lang.ArithmeticException: / by zero


---------------
get amaroK plugin
n°347968
BifaceMcLe​OD
The HighGlandeur
Posté le 31-03-2003 à 09:51:04  profilanswer
 

C'est bizarre, moi j'obtiens bien une ArithmeticException, que ce soit avec HotSpot Client ou Server en 1.4.1_02-b06.
 
edit> Grillé. :D


Message édité par BifaceMcLeOD le 31-03-2003 à 09:51:46
n°347970
Predicator
Posté le 31-03-2003 à 09:52:42  profilanswer
 

bobuse a écrit :

Moi j'ai essayé avec la 1.4.1_02, et ca marche :
 

Citation :


%java -version
java version "1.4.1_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_02-b06)
Java HotSpot(TM) Client VM (build 1.4.1_02-b06, mixed mode)  
%java test
java.lang.ArithmeticException: / by zero

 


 
je confirme :jap:

n°347988
robbystar
My baby got the bends
Posté le 31-03-2003 à 10:20:28  profilanswer
 

C'est bizarr. Je précise que j'ai donné un code similaire mais pas mon vrai code attendez je reteste...

n°347994
robbystar
My baby got the bends
Posté le 31-03-2003 à 10:23:04  profilanswer
 

Code :
  1. double coeff = 0;
  2.            try {
  3.                coeff = 1 / coeff;
  4.            } catch (Exception e) {
  5.                System.out.println(e);
  6.            }


Ca me capture pas l'exception et ça me donne infinity à l'affichage!  [:totoz]

n°348001
El_gringo
Posté le 31-03-2003 à 10:28:01  profilanswer
 

robbystar a écrit :

Code :
  1. double coeff = 0;
  2.            try {
  3.                coeff = 1 / coeff;
  4.            } catch (Exception e) {
  5.                System.out.println(e);
  6.            }


Ca me capture pas l'exception et ça me donne infinity à l'affichage!  [:totoz]  


 
Comment ça, ça te donne infinity à l'affichage !?? :heink:  
Un double ça peut pas valoir "infinity"...

n°348020
robbystar
My baby got the bends
Posté le 31-03-2003 à 10:49:29  profilanswer
 

El_gringo a écrit :


 
Comment ça, ça te donne infinity à l'affichage !?? :heink:  
Un double ça peut pas valoir "infinity"...

En fait le "coeff" en question j'en fais un Double après...
 

Code :
  1. new Double(coeff);


 
Donc c'est ce Double en question qui affiche infinity... Mais à la limite c'est même pas le problème, c'est que je comprends pas pourquoi l'exception est pas levée.  [:mouais]
 
C'est vraiment trop bizarre...

n°348049
Predicator
Posté le 31-03-2003 à 11:10:57  profilanswer
 

robbystar a écrit :

En fait le "coeff" en question j'en fais un Double après...
 

Code :
  1. new Double(coeff);


 
Donc c'est ce Double en question qui affiche infinity... Mais à la limite c'est même pas le problème, c'est que je comprends pas pourquoi l'exception est pas levée.  [:mouais]
 
C'est vraiment trop bizarre...


 
je confirme...
soutv(coeff) donne "Infinity"

mood
Publicité
Posté le 31-03-2003 à 11:10:57  profilanswer
 

n°348251
BifaceMcLe​OD
The HighGlandeur
Posté le 31-03-2003 à 14:36:05  profilanswer
 

A priori, c'est conforme à la spécification de la machine virtuelle :  

Citation :

An integer division (§15.17.2) or integer remainder (§15.17.3) operator throws an ArithmeticException if the value of the right-hand operand expression is zero.


Donc ArithmeticException est levée sur des entiers, pas des flottants.
 
Vous trouverez ici dans quelle(s) condition(s) une exception est levée en cours d'évaluation d'une expression (et quelle exception est levée).
 
D'ailleurs, "Infinity" est une valeur flottante valide dans la spécification des nombres réels à virgule flottante IEEE (celle qu'utilisent C et Java).
 
edit> Tu peux tester le caractère "infini" d'un réel en utilisant la méthode "static boolean java.lang.Double.isInfinite(double v)".


Message édité par BifaceMcLeOD le 31-03-2003 à 14:38:12
n°348266
bobuse
Posté le 31-03-2003 à 14:42:06  profilanswer
 

BifaceMcLeOD a écrit :


D'ailleurs, "Infinity" est une valeur flottante valide dans la spécification des nombres réels à virgule flottante IEEE (celle qu'utilisent C et Java).
 


 ;) C'est bien ce que je me disais aussi, mais je voulais pas dire de conneries.


---------------
get amaroK plugin
n°348726
deltaden
Posté le 01-04-2003 à 02:52:43  profilanswer
 

BifaceMcLeOD a écrit :


D'ailleurs, "Infinity" est une valeur flottante valide dans la spécification des nombres réels à virgule flottante IEEE (celle qu'utilisent C et Java).


en effet, et d'ailleurs Not-a-Number (NaN) aussi (indétermination 0/0, oo/oo, +oo -oo)


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Division par zéro en Java, exception non catchée ?

 

Sujets relatifs
Programme Java (niveau Licence Info)Se connecter a une bdd MySQL a partir d'un applet JAVA...
un bon site de java, cours exemple etc, oui mais lequel ?Peut on lancer un .bat depuis java??
applet java ou autre chose si pas de java VMcomment baisser le timeout d'une exception??
pb avec getGraphics en java[Java] ou [javascript] appels methodes parametrables
problème sur message d'erreur java[Java] Problème constaté avec 2 cartes réseau
Plus de sujets relatifs à : Division par zéro en Java, exception non catchée ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR