En Java, un try { ... } finally { ... } est exécuté quelque peu unintuitively pour moi. Comme illustré dans une autre question, En Java, ne retour trump enfin?, si vous avez une instruction de retour dans le bloc try, il sera ignoré si un bloc finally est défini. Par exemple, la fonction
boolean test () {
try {
return true;
}
finally {
return false;
}
}
renverra toujours false. Ma question: pourquoi est-ce? Est-il une philosophie particulière derrière cette décision de conception apportées par Java? J'apprécie toute la perspicacité, je vous remercie.
Edit: je me suis particulièrement intéressé à "pourquoi" Java pense que c'est ok pour violer la sémantique que je définis. Si je 'retour' dans un bloc try, la méthode doit retourner à droite, puis et là. Mais la JVM décide d'ignorer mon instruction et de retour de sous-routine qui n'a pas encore été atteint.