Maison > Java > javaDidacticiel > le corps du texte

Quelle déclaration de retour règne en maître : déterminer la valeur définitive dans un bloc Try-Finally ?

Susan Sarandon
Libérer: 2024-11-24 09:39:11
original
139 Les gens l'ont consulté

Which Return Statement Reigns Supreme: Unraveling the Definitive Value in a Try-Finally Block?

L'énigme des retours multiples : démêler la valeur de retour définitive

Imaginez un scénario dans lequel l'exécution d'une méthode traverse plusieurs instructions de retour dans un bloc try-finally. Une question naturelle se pose : quelle instruction return détermine en fin de compte la valeur de retour finale de la méthode ? Pour approfondir cette énigme, analysons un extrait de code spécifique :

String test() {
    try {
        return "1";
    } finally {
        return "2";
    }
}
Copier après la connexion

L'intrigue consiste à comprendre si la valeur de retour d'un appel à test() est cohérente sur toutes les machines virtuelles Java (JVM). La spécification du langage Java détient la clé de ce mystère.

Découvrir la position des spécifications du langage

Selon la spécification du langage Java, le retour du bloc final écrase le retour du bloc try. Ainsi, "2" est désigné sans équivoque comme la valeur de retour finale, quelle que soit la JVM utilisée.

Confirmation de la conformité avec Sun JVM et au-delà

Empiriquement, la JVM Sun adhère à cette spécification, rendant systématiquement "2" comme valeur de retour pour test(). Cependant, il est crucial de noter que cette conformité n'est pas simplement une bizarrerie spécifique à la JVM.

La spécification l'exige explicitement, et toute JVM qui s'en écarte est considérée comme non conforme. Par conséquent, il est prudent d'affirmer que la valeur de retour définitive sera toujours "2" dans toute JVM respectueuse des spécifications.

Un avertissement sobre : évitez les abominations de codage

Bien que la spécification apporte des éclaircissements sur le comportement de la valeur de retour, il est fortement déconseillé d’utiliser plusieurs retours au sein d’une seule méthode. De telles pratiques de codage introduisent une confusion inutile et violent les principes fondamentaux de codage.

Les compilateurs émettent souvent des avertissements contre cette approche douteuse, comme en témoigne l'affirmation d'Eclipse selon laquelle le bloc de retour de test() ne s'exécutera jamais (à tort). Adoptez la sagesse de la spécification du langage et évitez ces abominations de codage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal