Exception non gérée en Java
Je suis actuellement dans le processus de l'apprentissage comment bien faire d'exception personnalisée et je suis tombé sur un problème. Chaque fois que j'essaie d'utiliser un objet d'une classe qui génère cette exception personnalisée, mon IDE du débogueur (je suis à l'aide d'IntelliJ idea), dit "Exception non Gérée: InsertExceptionName()". Le code, de manière simplifiée, ressemble à quelque chose comme ça. Dans ce cas, il doit retourner une exception si le numéro généré de façon aléatoire est <0,5 et retourner un nombre autrement, mais il ne va pas le faire.
Ce qui me manque?
public class main {
public static void main(String[] args) {
double x=Math.random();
operation op=new operation();
op.execute(x);
}
}
-
public class operation {
public operation() {
}
public double execute(double x) throws RandomWeirdException {
if(x<0.5) {
throw new RandomWeirdException("<0.5");
}
return x;
}
}
-
public class RandomWeirdException extends Exception{
public RandomWeirdException() {
super();
}
public RandomWeirdException(String message) {
super(message);
}
}
Vous devez vous connecter pour publier un commentaire.
Que voulez-vous dire "retourner" une exception? Lorsqu'une exception est levée, il bulles en haut de la pile d'appel.
Vous n'êtes pas de la manipulation dans ce cas. Il atteint
main
et donc vous avez une exception non gérée.Si vous voulez gérer une exception, vous pouvez utiliser une
try-catch
bloc. De préférence entourantmain
dans ce cas.Une autre solution serait de préciser que
main
lance un "RandomWeirdException
", et pascatch
en premier lieu.Il est préférable de les laisser fonctions
throw
, à moins que vous pouvez raisonnablement gérer les cas exceptionnels.Si vous venez de
catch
pour le bien de l'attraper sans faire quelque chose de valable dans un cas exceptionnel, c'est l'équivalent de cacher une erreur parfois.Vous utilisez le
execute
méthode, sans la création d'un bloc try-catch pour leRandomWiredException
laquelle il déclare qu'il est en train de lancer. Java requis tout vérifié exceptions (qui s'étendentException
) pour être correctement géré par l'appelant - soit avec un bloc try-catch, ou par l'ajout dethrows
à l'appel de la méthode (dans ce cas, il estmain
, alors il ne devrait pas avoir unthrows
clause).Donc la bonne façon de le faire est comme:
Le code dans la clause catch est en place pour les besoins de votre application, bien sûr.
Remarque: utilisez des majuscules lettre initiale lorsque vous nommez les classes. C'est l'un des Java style conventions qui permettront d'améliorer votre lisibilité du code.