Erreur exception java

Fermé
lolo - 16 juin 2012 à 21:41
 Utilisateur anonyme - 18 juin 2012 à 00:03
Bonjour,
j'ai créer une exception qui se lève lorsque je fait une division par zéro aucune erreur est dans les deux classe mais pourquoi l'orsque l'exception se lève il ne m'affiche pas le message d'erreur
voici la classe de l'exception

package testmaexception;


public class divo extends Exception{
public void affichex(){
System.out.println("b ne peut pas etre egale a zero");
}
}
et voici l'autre classe dans la quel je test cette exception


package testmaexception;
import java.util.Scanner;


public class Testmaexception {
public static void affichdiv() throws divo{
int a,b;
Scanner c1 = new Scanner(System.in);
System.err.println("donner un premier entier");
a=c1.nextInt();
System.err.println("donner un deuxieme entier");
Scanner c2 = new Scanner(System.in);
b=c2.nextInt();
if(b<0)
throw new divo();
else
System.out.println("voici le resultat "+a/b);
}


public static void main(String[] args) {
try{
affichdiv();}
catch(divo e){
System.out.println("b ne peut pas etre egale a zero");
}
}
}

A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
16 juin 2012 à 21:56
Si l'exception doit être levée lorsque b=0,ça n'a pas de sens de mettre if (b<0)

Remarques :

1) Il n'est pas nécessaire de créer un nouveau Scanner à chaque fois que tu fais une entrée, System.in est unique, donc son flux aussi, là tu te compliques la vie.

2) Si tu veux créer une exception, autant la faire correctement, il faut que tu redéfinisses les constructeurs, parce que ce sont eux qui feront le comportement de la méthode, ton "affichex" ne sert à rien...
0
Salut,

Comment peux-tu dire qu'il n'y a pas d'exception quand tu divises par zéro ?

As tu au moins entré 0 lors de la demande du deuxième entier ?

Je t'assure que sans modifier ton programme une exception sera bien levée si tu saisis 0 pour ce second entier à l'exécution de
System.out.println("voici le resultat "+a/b);

Et n'oublie pas que <0 n'est pas == 0 et que le diviseur peut être négatif comme le dividende bien entendu...

Amuse toi aussi à entrer un divideur négatif...

Il est important que tu saches que pour qu'une exception soit levée il faut que la cause de cette levée existe, soit dans ce cas, que la division par zéro se produise.

Ensuite il te restera à suivre les recommandations de KX.

Dan
Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
0