Rumah > Java > javaTutorial > teks badan

Penyata Pemulangan Mana Yang Merajai Tertinggi: Membongkar Nilai Definitif dalam Blok Cuba-Akhirnya?

Susan Sarandon
Lepaskan: 2024-11-24 09:39:11
asal
140 orang telah melayarinya

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

Teka-teki Pulangan Berbilang: Membongkar Nilai Pulangan Definitif

Bayangkan senario di mana pelaksanaan kaedah merentasi berbilang penyataan pulangan dalam blok cuba-akhir. Soalan semula jadi timbul: Pernyataan pulangan manakah yang akhirnya menentukan nilai pulangan akhir kaedah? Untuk menyelidiki teka-teki ini, mari kita analisis coretan kod tertentu:

String test() {
    try {
        return "1";
    } finally {
        return "2";
    }
}
Salin selepas log masuk

Tipu tipu daya terletak pada pemahaman sama ada nilai pulangan daripada panggilan untuk menguji() adalah konsisten merentas semua Mesin Maya Java (JVM). Spesifikasi Bahasa Java memegang kunci kepada misteri ini.

Mendedahkan Pendirian Spesifikasi Bahasa

Menurut Spesifikasi Bahasa Java, pulangan daripada blok akhirnya akan menimpa pulangan daripada blok cuba. Oleh itu, "2" ditetapkan secara jelas sebagai nilai pulangan akhir, tanpa mengira JVM yang digunakan.

Mengesahkan Pematuhan dengan Sun JVM dan Beyond

Secara empirik, Sun JVM mematuhi spesifikasi ini, secara konsisten menjadikan "2" sebagai nilai pulangan untuk test(). Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pematuhan ini bukan semata-mata kelainan khusus JVM.

Spesifikasi secara eksplisit mewajibkannya, dan mana-mana JVM yang menyimpang daripadanya dianggap tidak mematuhinya. Oleh itu, adalah selamat untuk menegaskan bahawa nilai pulangan muktamad akan sentiasa "2" dalam mana-mana JVM yang mematuhi spesifikasi.

Amaran Sedar: Elakkan Pengekodan Keji

Sementara spesifikasi memberikan kejelasan tentang tingkah laku nilai pulangan, adalah dinasihatkan agar tidak menggunakan berbilang pulangan dalam satu kaedah. Amalan pengekodan sedemikian memperkenalkan kekeliruan yang tidak perlu dan melanggar prinsip pengekodan asas.

Penyusun selalunya akan mengeluarkan amaran terhadap pendekatan yang boleh dipersoalkan ini, seperti yang ditunjukkan oleh penegasan Eclipse bahawa blok pemulangan ujian() tidak akan dilaksanakan (secara salah). Hayati kebijaksanaan spek bahasa dan elakkan pengekodan yang keji ini.

Atas ialah kandungan terperinci Penyata Pemulangan Mana Yang Merajai Tertinggi: Membongkar Nilai Definitif dalam Blok Cuba-Akhirnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan