Exception n'est jamais jeté dans le corps de correspondant instruction try
J'ai un problème avec la gestion des exceptions en Java, voici mon code. J'ai eu compilateur d'erreur lorsque j'essaie d'exécuter cette ligne: throw new MojException("Bledne dane");
. L'erreur est:
exception MojException n'est jamais jeté dans le corps de correspondant instruction try
Voici le code:
public class Test {
public static void main(String[] args) throws MojException {
//TODO Auto-generated method stub
for(int i=1;i<args.length;i++){
try{
Integer.parseInt(args[i-1]);
}
catch(MojException e){
throw new MojException("Bledne dane");
}
try{
WierszTrojkataPascala a = new WierszTrojkataPascala(Integer.parseInt(args[0]));
System.out.println(args[i]+" : "+a.wspolczynnik(Integer.parseInt(args[i])));
}
catch(MojException e){
throw new MojException(args[i]+" "+e.getMessage());
}
}
}
}
Et voici un code de MojException:
public class MojException extends Exception{
MojException(String s){
super(s);
}
}
Quelqu'un peut-il m'aider?
Qu'est-ce que l'erreur de compilation?
Eh bien...un
Toujours, toujours toujours nous dire quelle est l'erreur, plutôt que juste que vous en avez un.
exception MojException n'est jamais jeté dans le corps de correspondant instruction try - Voici le message d'erreur.
Réponse tardive... étendre RuntimeException ... Pas Exception..
Eh bien...un
MojException
ne va pas être levée à partir de Integer.parseInt
...Toujours, toujours toujours nous dire quelle est l'erreur, plutôt que juste que vous en avez un.
exception MojException n'est jamais jeté dans le corps de correspondant instruction try - Voici le message d'erreur.
Réponse tardive... étendre RuntimeException ... Pas Exception..
OriginalL'auteur user3407967 | 2014-03-24
Vous devez vous connecter pour publier un commentaire.
Un fourre-bloc dans un rapport d'essai doit attraper exactement l'exception que le code de la
try {}
-bloc peut jeter (ou une super-classe).Ce que vous essayez de faire est ceci:
Cela conduira à une erreur du compilateur, parce que votre java sait que vous êtes en essayant d'attraper une exception qui ne sera jamais JAMAIS JAMAIS se produire. Ainsi, vous obtenez:
exception ExceptionA is never thrown in body of corresponding try statement
.Je n'ai aucune IDE de mes mains en ce moment, mais je suppose que depuis exceptions " est la super-classe de coché et décoché exceptions, de compiler. E. g., un Nullpointer-Exception (qui est un décoché exception et une sous-classe de Exception) puisse être jetés n'importe où, donc le code à compiler...
Votre ciselée est étonnant - oui, c'est exactement ce que je veux écrire! Pour être précis, mon
ExceptionA
estInterruptedException
qui, évidemment, ne jamais écrite dans le code, mais le fait d'être soulevé d'autres fil. Comment puis-jecatch InterruptedException
?Je pense que celui-ci répond à votre question -> stackoverflow.com/questions/6546193/...
OriginalL'auteur Christian
Comme l'a souligné dans les commentaires, vous ne pouvez pas intercepter une exception qui n'est pas levée par le code à l'intérieur de votre
try
bloc. Essayez de changer votre code:Toujours vérifier la la documentation pour voir quelles sont les exceptions levées par chaque méthode. Vous pouvez aussi lire sur le sujet de vérifié vs décoché exceptions avant qui provoque une confusion dans l'avenir.
Vous pouvez poster l'intégralité de votre message d'exception?
E:\workspace\pascal1\src\pascal1>java Test 8 une Exception dans le thread "main" java.lang.NumberFormatException: Pour la saisie de texte: "un" à la java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Entier.parseInt(Unknown Source) at java.lang.Entier.parseInt(Unknown Source) at Test.main(Test.java:14)
Cette exception est levée sur la ligne 14, qui est dans votre deuxième bloc try. Vous devez ajuster le message d'exception pour que
catch
clause.Vous avez à tout envelopper dans un autre try-catch-bloc pour le faire fonctionner. Mais pour être honnête, ce serait très moche code. Je pense que vous devez vous familiariser avec les concepts de base de la gestion des exceptions en premier lieu! Ce que vous essayez ici est de lancer une exception de jeter un autre. Habituellement ce n'est pas nécessaire et ne conduira pas à un bon code.
OriginalL'auteur Duncan Jones
Toujours se rappeler que, dans le cas des bagages exception que vous pouvez attraper seulement après avoir jeté l'exception(que vous jetez ou tout intégré de la méthode utilisée dans votre code peut jeter) ,mais en cas de non cochée exception de Vous attraper, même lorsque vous n'avez pas jeté cette exception.
OriginalL'auteur Mohit gupta
Toute la classe qui s'étend
Exception
classe sera un défini par l'utilisateur Vérifié classe d'exception où toute la classe qui s'étendRuntimeException
sera Décoché classe d'exception.comme mentionné dans Exception défini par l'utilisateur sont enregistrés ou non des exceptions
Donc, ne pas jeter l'objet d'une exception(défini par l'utilisateur intégrée ou d'exception) donne erreur de compilation.
Vérifié exception sont les exceptions qui sont vérifiées au moment de la compilation.
Décoché exception sont les exceptions qui ne sont pas vérifiées lors de la compilation
OriginalL'auteur Astha