Java Exception
Résolu
keurdange
Messages postés
720
Date d'inscription
Statut
Membre
Dernière intervention
-
keurdange Messages postés 720 Date d'inscription Statut Membre Dernière intervention -
keurdange Messages postés 720 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Java Exception
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
1 réponse
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
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
Faire un traitement dans le constructeur de l'exception est pour le moins... moche !
En plus tu fais un throws DivisionZero sur le constructeur de l'exception DivisionZero, c'est un peu spécial quand même... D'autant que le traitement est spécifique à une seule des tes méthodes alors qu'elle devrait au moins pouvoir être utilisée sur toutes les méthodes de ta classe et de ses classes filles (notions de réutilisabilité en conception objet)
Remarque (je n'en finis plus ^^) : quitte à hériter d'une exception, autant hériter de ArithmeticException, sans oublier de faire un appel à super.
Evidemment l'intérêt est très limité ici, mais même pour l'exemple autant faire du code qui ressemble à peu près à ce que tu pourrais avoir à faire un jour en vrai ;-)
Merci
Par défaut Eclipse me le met directement à 1 (le L pour dire que c'est de type long)