web-dev-qa-db-fra.com

Comment puis-je générer une erreur dans la fonction if-else dans java

Tout ce que j'ai fait sur Google semble axé sur la "capture" des erreurs. Je veux pouvoir élever le mien si certaines conditions sont remplies. J'ai essayé d'utiliser la classe Error () et ses sous-classes mais Eclipse ne les reconnaît pas.

Voici ce que je veux faire:

if(some_condition) {
    foobar();
}
else {
    // raise an error
}

Question stupide, je sais, mais j'ai fait ma recherche sur Google et je pense que quelqu'un pourrait m'aider.

Merci d'avance!


Merci tout le monde! Si vous lisez ceci à l'avenir, voici le maigre:

  1. Les erreurs dans Java font référence à des problèmes que vous ne devriez PAS essayer d'attraper)

  2. Les exceptions font référence aux erreurs que vous souhaiterez peut-être intercepter.

Voici mon code "fixe":

if(some_condition) {
    foobar();
}
else {
    throw new RuntimeError("Bad.");
}

J'ai utilisé RuntimeError() parce que, comme une réponse l'a souligné, je n'ai pas à déclarer que je lance une erreur au préalable, et puisque je compte sur une condition, c'est très utile.

Merci a tous!

19
Eli Dinkelspiel

Voici:

throw new Java.lang.Error("this is very bad");

Plus idiomatique pour lancer une sous-classe d'Exception. RuntimeException en particulier n'est pas cochée (par exemple, les méthodes n'ont pas besoin de déclarer qu'elles pourraient la lancer). (Eh bien, l'erreur aussi, mais elle est censée être réservée aux choses irrécupérables).

throw new Java.lang.RuntimeException("this is not quite as bad");

Remarque: vous n'avez pas vraiment besoin de les construire à ce moment-là. Vous pouvez en lancer des préconstruits. Mais une chose agréable à propos de leur construction est qu'ils enregistrent la ligne de code sur laquelle ils se trouvaient et la pile complète d'appels qui s'est produite au moment de la construction, et donc en construire une nouvelle juste lorsque vous la lancez l'injecte des informations de diagnostic très utiles .

31
G. Sylvie Davies

Essayez de lever une exception:

public void yourMethod() throws Exception {
    if (some_condition) {
        foobar();
    }
    else {
        throw new Exception("Something bad happened.");
    }
}
6
Tim Biegeleisen

Une erreur dans Java est appelée Exception ( Voir ceci ).

if(some_condition){
   foobar();
} else {
   throw new Exception();
}

Formellement, une erreur est une classe qui s'étend de Throwable.

La classe Throwable est la superclasse de toutes les erreurs et exceptions dans le langage Java. Seuls les objets qui sont des instances de cette classe (ou l'une de ses sous-classes) sont levés par le Java Virtual Machine ou peut être lancé par l'instruction Java throw. De même, seule cette classe ou l'une de ses sous-classes peut être le type d'argument dans une clause catch. Aux fins de la compilation - vérification des exceptions, Throwable et toute sous-classe de Throwable qui n'est pas également une sous-classe de RuntimeException ou Error sont considérées comme des exceptions vérifiées.

...

https://docs.Oracle.com/javase/7/docs/api/Java/lang/Throwable.html

1
Manuel Vieda

Essayez-vous de soulever une erreur dans la console uniquement? Ou essayez-vous de montrer une erreur à l'utilisateur?

Dans ce cas, vous pouvez utiliser un JOptionPane pour créer une boîte de dialogue d'erreur.

1
Shivam Sinha

Pas besoin de se sentir stupide :-) Vous pouvez créer votre propre exception, par exemple,

public class UnknownUnitException extends Exception{
    private String message = null;
    public UnknownUnitException() {
        super();
    }
    public UnknownUnitException(String message) {
        super(message);
        this.message = message;
    }
    public UnknownUnitException(Throwable cause) {
        super(cause);
    }
    @Override
    public String toString() {
        return message;
    }
    @Override
    public String getMessage() {
        return message;
    }
}

Je recommanderais Leçon: Exceptions au Java Tutoriels

1
Tamias