69 votes

Comment lancer une exception générale en Java?

Considérez ce programme simple. Le programme a deux fichiers:

 Vehicle.java:


class Vehicle {
    private int speed = 0;
    private int maxSpeed = 100;

    public int getSpeed()
    {
        return speed;
    }

    public int getMaxSpeed()
    {
        return maxSpeed;
    }

    public void speedUp(int increment)
    {
        if(speed + increment > maxSpeed){
            // throw exception
        }else{
            speed += increment;
        }
    }

    public void speedDown(int decrement)
    {
        if(speed - decrement < 0){
            // throw exception
        }else{
            speed -= decrement;
        }
    }
}
 

Et HelloWorld.java:

 public class HelloWorld {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Vehicle v1 = new Vehicle();
        Vehicle v2 = new Vehicle();

            // do something

            // print something useful, TODO         
        System.out.println(v1.getSpeed());
    }

}
 

Comme vous pouvez le constater dans le premier cours, j’ai ajouté un commentaire ("// throw exception") dans lequel je voudrais lancer une exception. Dois-je définir ma propre classe pour les exceptions ou existe-t-il une classe d'exception générale en Java que je puisse utiliser?

105voto

Fortega Points 8890

Vous pouvez créer votre propre classe d'exception:

 public class InvalidSpeedException extends Exception {

  public InvalidSpeedException(String message){
     super(message);
  }

}
 

Dans votre code:

 throw new InvalidSpeedException("TOO HIGH");
 

44voto

Maurício Linhares Points 19468

Vous pouvez utiliser IllegalArgumentException:

 public void speedDown(int decrement)
{
    if(speed - decrement < 0){
        throw new IllegalArgumentException("Final speed can not be less than zero");
    }else{
        speed -= decrement;
    }
}
 

13voto

RMT Points 3687

Eh bien, il y a beaucoup d'exceptions à lancer, mais voici comment vous lancez une exception:

 throw new IllegalArgumentException("INVALID");
 

De plus, vous pouvez créer vos propres exceptions personnalisées.

Edit: Notez également les exceptions. Lorsque vous lâchez une exception (comme ci-dessus) et que vous attrapez l'exception: vous pouvez accéder au String que vous indiquez dans l'exception à l'aide de la méthode getMessage()

 try{
    methodThatThrowsException();
}catch(IllegalArgumentException e)
{
  e.getMessage();
}
 

4voto

SLaks Points 391154

Java comporte un grand nombre d'exceptions intégrées pour différents scénarios.

Dans ce cas, vous devriez jeter un IllegalArgumentException , car le problème est que l'appelant a transmis un paramètre incorrect.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X