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

gacki Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -  
gacki Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
ok merci beaucoup :D
0