J'ai une chaîne Exception dans laquelle method1
jette une exception à method2
qui jette l'exception sur main
. Pour quelque raison, le compilateur me force à traiter l'erreur dans method2
et la marque comme une erreur si je ne le fais pas, indiquant qu'il s'agit d'une exception vérifiée. Mais quand le même Exception
est jeté plus bas sur la ligne à main
, le compilateur me permet de l'ignorer et n'affiche aucune erreur. L'exception d'origine dans method1
est ParseException
, qui est cochée. Mais la méthode a une clause générique throws Exception
dans l'en-tête, et le même objet est envoyé à la méthode 2, qui a une clause throws Exception
identique. Quand et comment cette exception perd-elle le statut d'être vérifié/attrapé par le compilateur?Les exceptions multi-levées sont-elles vérifiées ou exécutées?
Modifié pour clarifier:
public void method1() throws Exception{
// code that may generate ParseException
}
public void method2() throws Exception{
method1(); //compiler error (if the throws clause is left out)
}
public static void main(String[] args){
method2(); //ignored by compiler, even though the exception isn't caught or thrown or handled at all
}
Edit: tout le monde Désolé, la question a été fondée sur une erreur ... La principale méthode avait en fait une clause throws Exception
que je manque. J'ai enlevé cela et le code se comporte maintenant comme prévu. Merci pour votre aide!
Pouvez-vous clarifier? Est-ce que method1 lance le 'ParseException', qui est traité comme une 'Exception' par la méthode 2 et la main? Certaines signatures de méthode et les extraits de code try-catch-throw pourraient aider. – justkt
Le code vaut 10 000 mots. –
est ParseException une classe personnalisée? Si oui, pourriez-vous ajouter cela à votre exemple de code? –