System.exit(0) n'arrête pas le programme ... ??

Fermé
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016 - 29 déc. 2013 à 22:11
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016 - 30 déc. 2013 à 00:54
Bonjour,

j'ai un problème avec System.exit(0); cette dernière n'arrête pas le programme voici le code:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Point p = new Point(sc.nextInt(),sc.nextInt());
try
{
p.deplace(sc.nextDouble(), sc.nextDouble());
}
catch(NegDepException e)
{
System.out.println(e.getMessage());
System.exit(0);
}
System.out.println("c'est bon !!!");
}

3 réponses

gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016
29 déc. 2013 à 22:18
LOL j'ai résolut le problème mais j'ai aucune idée pourquoi et comment j'ai tous simplement fait des changement dans la méthode de déplacement j'ai ajouter un System.exit(0); mais je n'arrive pas a savoir pourquoi ??
0
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016
29 déc. 2013 à 22:20
le code de la class Point :
class NegDepException extends Exception{
private String st;
public NegDepException(String s)
{
super(s);
st = s;
}
}

public class Point {
private double x;
private double y;
public Point(double x,double y)
{
this.x = x;
this.y = y;
}
public void deplaceX(double dx) throws NegDepException
{
if((x + dx) < 0) throw new NegDepException("erreur de deplacement suivant x");
x = x + dx;
}
public void deplaceY(double dy) throws NegDepException
{
if((y + dy) < 0) throw new NegDepException("erreur de deplacement suivant y");
y = y + dy;
}
public void deplace(double dx,double dy) throws NegDepException
{
if((x + dx) < 0 && (y + dy) < 0) throw new NegDepException("erreur dans les deux dep X et Y");
try
{
deplaceX(dx);
deplaceY(dy);
}
catch(NegDepException e1)
{
System.out.println(e1.getMessage());
System.exit(0);//c'est cella que j'ai ajouter
}
}
}


est-ce-que quelqu'un pourra m'expliqué comment et pourquoi ??
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 déc. 2013 à 22:21
Le
System.exit(0);
n'a lieu que lorsque
deplace 
provoque une
NegDepException
, si tu n'as pas d'exception le programme se terminera normalement.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 déc. 2013 à 22:23
Vu ton code de deplace, c'est parce que tu aurais du faire :

try
{
    deplaceX(dx);
    deplaceY(dy);
}
catch(NegDepException e1)
{
    System.out.println(e1.getMessage());
    throw e1; // propage l'exception via le throws (jusqu'au main)
}
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 déc. 2013 à 22:25
Remarque : je déconseilles vivement l'usage de
System.exit
, ça a peu de raison d'être en Java, il vaut mieux utiliser le mécanisme d'exception (des RuntimeException notamment)
0
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016
30 déc. 2013 à 00:54
ok merci beaucoup :D
0