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

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

  • Votes
  • Date
  • Date décroissante
  1. 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 ??
    1. 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 ??
      1. Modérateur
        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.
        1. Modérateur
          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)
          }
        2. Modérateur
          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)
        3. ok merci beaucoup :D