Java Exceptions: exception MyException est jamais jeté dans le corps de la déclaration d'essai correspondant

StackOverflow https://stackoverflow.com/questions/4317643

Question

Je comprends l'idée de cette erreur. Mais je suppose que je ne comprends pas comment fonctionne en bas de la pile d'appel.

Fichier Main.java:

public static void main(String[] args) {
    try {
         Function1();
      } catch (myException e) {
      System.out.println(e.getMessage());
    }
}
public static void Function1() {
    Function2();
}

Function2 existe dans un autre fichier:

File2.java

public void Function2() throws myException {
     ....
}

Ainsi, à travers plusieurs appels (en bas de la pile d'appel) Je Function2 qui spécifie l'exigence « jette MyException ». Comment se fait la fonction principale (où l'erreur est dirigé à) ne reconnaît pas que je jette MyException la ligne?

Toute orientation dans où le « trou » dans mes mensonges « connaissances d'exception » serait grandement apprécié.

aitee,

Était-ce utile?

La solution

Le trou est que Function2 déclare qu'il lève l'exception, mais Function1 ne fonctionne pas. Java ne creuse pas son chemin à travers les hiérarchies d'appel possibles, mais passe directement par ce que vous déclarez dans les déclarations de throws.

Function1 se contenter de ne pas déclarer le jet probablement parce que myException est un RuntimeException.

Autres conseils

problème Votre est que Function1() ne déclare pas qu'il throws myException - ce qui signifie qu'il devrait y avoir 2 erreurs de compilation:. Une de l'exception ne pas être pris ou déclarées, et un d'attraper l'exception non déclarée

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top