Heim > Java > javaLernprogramm > Hauptteil

Welche Return-Anweisung steht an erster Stelle: Den endgültigen Wert in einem Try-Finally-Block entschlüsseln?

Susan Sarandon
Freigeben: 2024-11-24 09:39:11
Original
140 Leute haben es durchsucht

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

Das Rätsel mehrerer Rückgaben: Den endgültigen Rückgabewert enträtseln

Stellen Sie sich ein Szenario vor, in dem die Ausführung einer Methode mehrere Rückgabeanweisungen innerhalb eines try-finally-Blocks durchläuft. Es stellt sich natürlich die Frage: Welche Rückgabeanweisung bestimmt letztendlich den endgültigen Rückgabewert der Methode? Um diesem Rätsel auf den Grund zu gehen, analysieren wir einen bestimmten Codeausschnitt:

String test() {
    try {
        return "1";
    } finally {
        return "2";
    }
}
Nach dem Login kopieren

Die Faszination besteht darin, zu verstehen, ob der Rückgabewert eines Aufrufs von test() über alle Java Virtual Machines (JVMs) hinweg konsistent ist. Die Java-Sprachspezifikation birgt den Schlüssel zu diesem Rätsel.

Den Standpunkt der Sprachspezifikationen aufdecken

Gemäß der Java-Sprachspezifikation überschreibt die Rückgabe vom „finally“-Block die Rückgabe vom „try“-Block. Somit wird „2“ eindeutig als endgültiger Rückgabewert bezeichnet, unabhängig von der verwendeten JVM.

Bestätigung der Konformität mit Sun JVM und darüber hinaus

Empirisch hält sich die Sun JVM an diese Spezifikation, Gibt konsequent „2“ als Rückgabewert für test() zurück. Es ist jedoch wichtig zu beachten, dass es sich bei dieser Konformität nicht nur um eine JVM-spezifische Eigenart handelt.

Die Spezifikation schreibt dies ausdrücklich vor, und jede JVM, die davon abweicht, gilt als nicht konform. Daher kann man mit Sicherheit behaupten, dass der endgültige Rückgabewert in jeder spezifikationskonformen JVM immer „2“ sein wird.

Eine nüchterne Warnung: Vermeiden Sie Codierungsabscheulichkeiten

Die Spezifikation sorgt zwar für Klarheit darüber Aufgrund des Rückgabewertverhaltens wird dringend davon abgeraten, mehrere Rückgaben innerhalb einer einzigen Methode zu verwenden. Solche Codierungspraktiken führen zu unnötiger Verwirrung und verstoßen gegen grundlegende Codierungsprinzipien.

Compiler geben häufig Warnungen vor diesem fragwürdigen Ansatz aus, wie die Behauptung von Eclipse zeigt, dass der Rückgabeblock von test() niemals (fehlerhaft) ausgeführt wird. Machen Sie sich die Weisheit der Sprachspezifikation zu eigen und vermeiden Sie diese Codierungsabscheulichkeiten.

Das obige ist der detaillierte Inhalt vonWelche Return-Anweisung steht an erster Stelle: Den endgültigen Wert in einem Try-Finally-Block entschlüsseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage