Java Exception [Résolu/Fermé]

Signaler
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
-
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
-
Bonjour,

J'aimerais faire un programme qui gère les exceptions (dans mon cas ci dessous une division par zéro. Si c'est le cas, il fait appel à une méthode pour refaire la division) mais il y a toujours une erreurs comme indiqué ci dessous:

import java.util.Scanner;
public class Division {
public static void MaDivision(float a,float b) throws DivisionZero
{
float prod = a/b; throw new DivisionZero();
//l'erreur se trouve ici. je pense que c'est le fait que DivisionZero n'est pas ici dans la classe Division Zero mais comment déclarer l'exception alors??
}
public static void main(String args[]) throws DivisionZero
{
float x,y;
Division div=new Division();
Scanner ngal=new Scanner(System.in);
System.out.println("Entrez les valeurs");
x=ngal.nextFloat();
y=ngal.nextFloat();
div.MaDivision(x, y);
}

class DivisionZero extends Exception{
public DivisionZero() throws DivisionZero
{
Division div=new Division();
Scanner Ngal=new Scanner(System.in);
System.out.println("Attention, division par zéro impossible\nVeuillez rentrer les nombres");
float a=Ngal.nextFloat();
float b=Ngal.nextFloat();
div.MaDivision(a, b);
}

}


}

N.B: je sais le faire avec try() catch(ArithmeticException e) mais je veux encore plus gérer l'exception et créer par moi même mon exception.

Merci.


1 réponse

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
Le problème vient que tu as déclaré ta classe DivisionZero à l'intérieur de la classe Division.
Pour corriger le problème tu dois "au choix" déclarer la classe à part, ou la déclarer à l'intérieur mais static. Dans les deux cas une encapsulation public ne ferait pas de mal ;-)
La confiance n'exclut pas le contrôle
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
215
Merci, ca marche
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
Remarque ; avec les ArithmeticException, et les RuntimeException en général, tu n'es pas obligé de faire des try catch ou des throws partout (de la même manière que tu ne mets pas de try à chaque fois que tu fais a/b ^^)
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
215
j'ai déplacé l'exception pour corriger le problème mais j'ai pas compris ton private static final long serialVersionUID = 1L; surtout l'initialisation à 1L.

Merci
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
Les exceptions implémentent l'interface Serializable qui demande un numéro de version.
Par défaut Eclipse me le met directement à 1 (le L pour dire que c'est de type long)
Messages postés
718
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
215
ok