J'ai juste eu un assez douloureux de dépannage de l'expérience dans la résolution de certains de code qui ressemble à ceci:
try {
doSomeStuff()
doMore()
} finally {
doSomeOtherStuff()
}
Le problème est difficile à résoudre car doSomeStuff() a lancé une exception, qui à leur tour causé doSomeOtherStuff() de lancer une exception. La deuxième exception (lancée par le bloc finally) a été levée à la hauteur de mon code, mais il n'a pas une poignée sur la première exception (jeté de doSomeStuff()), qui a été la véritable cause du problème.
Si le code avait dit ceci au lieu de cela, le problème aurait été évident:
try {
doSomeStuff()
doMore()
} catch (Exception e) {
log.error(e);
} finally {
doSomeOtherStuff()
}
Donc, ma question est ceci:
Est un bloc finally utilisé sans aucun bloc catch bien connu java anti-modèle? (Il semble être un non-facilement-apparente sous-classe de la évidemment bien connu d'anti-modèle "Ne pas avaler des exceptions!")