Division par zéro en Java, exception non catchée ? - Java - Programmation
Marsh Posté le 31-03-2003 à 03:46:31
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
Marsh Posté le 31-03-2003 à 09:48:29
Moi j'ai essayé avec la 1.4.1_02, et ca marche :
Citation : |
Marsh Posté le 31-03-2003 à 09:51:04
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é.
Marsh Posté le 31-03-2003 à 09:52:42
bobuse a écrit : Moi j'ai essayé avec la 1.4.1_02, et ca marche :
|
je confirme
Marsh Posté le 31-03-2003 à 10:20:28
C'est bizarr. Je précise que j'ai donné un code similaire mais pas mon vrai code attendez je reteste...
Marsh Posté le 31-03-2003 à 10:23:04
Code :
|
Ca me capture pas l'exception et ça me donne infinity à l'affichage!
Marsh Posté le 31-03-2003 à 10:28:01
robbystar a écrit :
|
Comment ça, ça te donne infinity à l'affichage !??
Un double ça peut pas valoir "infinity"...
Marsh Posté le 31-03-2003 à 10:49:29
El_gringo a écrit : |
En fait le "coeff" en question j'en fais un Double après...
Code :
|
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.
C'est vraiment trop bizarre...
Marsh Posté le 31-03-2003 à 11:10:57
robbystar a écrit : En fait le "coeff" en question j'en fais un Double après...
|
je confirme...
soutv(coeff) donne "Infinity"
Marsh Posté le 31-03-2003 à 14:36:05
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)".
Marsh Posté le 31-03-2003 à 14:42:06
BifaceMcLeOD a écrit : |
C'est bien ce que je me disais aussi, mais je voulais pas dire de conneries.
Marsh Posté le 01-04-2003 à 02:52:43
BifaceMcLeOD a écrit : |
en effet, et d'ailleurs Not-a-Number (NaN) aussi (indétermination 0/0, oo/oo, +oo -oo)
Marsh Posté le 31-03-2003 à 00:55:56
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...
Par contre dans le cas ou le zéro est dans un variable...
... Là en effet si j'affiche le contenu de ma division j'obtiens "infinity"... C'est normal ça?
Merci de votre aide
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