Une piqûre de rappel humoristique pour certains de mes étudiants qui avaient des problèmes pendant le cours de Java avec les notions de classe et d'héritage.
15. Ce ne sont plus des ensembles de
fruits, de fruits rouges ou de pommes...
... mais c'est le même principe!
16. Et c'est tout comme ça en
programmation orientée objets...
...y compris pour les exceptions!
17. Du coup, tu comprends
le problème ici...
try {
/* ... */
}
catch(Exception e) { Euh? Bof...
/* ... */
}
catch(ArithmeticException e) {
/* ... */
}
18. try {
intercepte les exceptions
/* ... */ de la classe Exception
}
catch(Exception e) {
/* ... */
}
catch(ArithmeticException e) {
/* ... */
}
intercepte les exceptions
de la classe
ArithmeticException
mais seulement celles qui
n'ont pas déjà été
interceptées, bien sûr...
19. Or...
try {
intercepte les exceptions
/* ... */ de la classe Exception
}
catch(Exception e) {
/* ... */
}
catch(ArithmeticException e) {
/* ... */
}
intercepte les exceptions
de la classe
ArithmeticException
mais seulement celles qui
n'ont pas déjà été
interceptées, bien sûr...n
20. Or...
try {
intercepte les exceptions
/* ... */ de la classe Exception
} y compris celles de la
catch(Exception e) { classe
/* ... */ ArithmeticException!
}
catch(ArithmeticException e) {
/* ... */
}
Du coup, ce gestionnaire
ne peut jamais être utilisé!
21. Du coup la solution est simple!
try {
/* ... */
}
catch(ArithmeticException e) {
/* ... */
Il faut mettre les
} gestionnaires du plus
catch(Exception e) { restrictif au plus générique
/* ... */
}
22. Au delà de la gestion des exceptions..
ce qui compte vraiment
c'est l'idée...
que les objets appartiennent
à des classes
Et que cesclasses sont incluses
dans d'autres classes
23. c'est la notion d' héritage , qui est
fondamentale en programmation orientée objets
compris
ok
oui