Soalan: Memahami Pelbagai Pulangan dan Kesannya terhadap Nilai Pulangan Akhir
Pertimbangkan kod berikut:
String test() { try { return "1"; } finally { return "2"; } }
Kod ini menggunakan berbilang penyata pulangan dalam satu fungsi. Adakah spesifikasi bahasa Java secara eksplisit menentukan nilai pulangan yang dianggap muktamad? Pada dasarnya, adakah nilai pulangan konsisten merentas semua Mesin Maya Java (JVM)?
Jawapan: Spesifikasi Bahasa dan Nilai Pulangan Akhir
Ya, spesifikasi bahasa Java menentukan bahawa nilai pulangan akhir bagi fungsi test() dalam kod yang disediakan ialah "2." Ini disebabkan oleh peletakan penyata pulangan dalam blok akhirnya.
Blok akhirnya dalam Java dijamin untuk dilaksanakan tanpa mengira sama ada pengecualian dilemparkan dalam blok cuba. Dalam kes ini, pernyataan pulangan dalam blok akhirnya akan sentiasa dilaksanakan, menetapkan nilai pulangan akhir fungsi kepada "2."
Pematuhan JVM dan Sisihan Spesifikasi
Adalah penting untuk ambil perhatian bahawa semua pelaksanaan JVM mesti mematuhi spesifikasi bahasa Java. Oleh itu, mana-mana JVM yang menyimpang daripada spesifikasi dengan memberikan nilai pulangan yang berbeza untuk fungsi test() akan dianggap tidak patuh.
Amaran Kompilasi dan Amalan Terbaik
Sementara coretan kod menyusun tanpa ralat, kebanyakan penyusun seperti Eclipse mengeluarkan amaran mengenai pernyataan pulangan yang tidak boleh dicapai dalam blok cubaan. Eclipse salah mengandaikan bahawa blok pemulangan tidak akan dilaksanakan kerana kehadiran blok akhirnya.
Secara amnya dianggap sebagai amalan yang tidak baik untuk membenamkan berbilang penyata pulangan dalam satu fungsi. Gaya pengekodan sedemikian boleh menyebabkan kod sukar difahami dan nyahpepijat.
Atas ialah kandungan terperinci Bagaimanakah Java Mengendalikan Penyata Pulangan Berbilang dalam Fungsi dengan Blok Akhirnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!