Rumah  >  Artikel  >  Java  >  Mengapa Penyata Pulangan dalam Blok Akhirnya Mengatasi Nilai Pulangan Blok Cuba?

Mengapa Penyata Pulangan dalam Blok Akhirnya Mengatasi Nilai Pulangan Blok Cuba?

Linda Hamilton
Linda Hamiltonasal
2024-11-11 02:34:02998semak imbas

Why Does a Return Statement in a Finally Block Override the Try Block's Return Value?

Sebab Nilai Pulangan Tidak Berubah

Dalam pernyataan cuba-akhir, pelaksanaan blok cuba diakhiri dengan pelaksanaan penyata pulangan. Pada ketika ini, nilai pembolehubah s yang dikembalikan oleh kaedah ialah nilai s pada masa pernyataan pulangan dilaksanakan.

Walaupun klausa akhirnya mengubah suai nilai s kemudian, ia akan tidak mengubah nilai pulangan kaedah selepas penyataan pulangan telah dilaksanakan.

Objek Tidak Boleh Berubah vs Boleh Berubah

Perlu ambil perhatian bahawa tingkah laku ini terpakai apabila mengubah suai nilai secara langsung s sendiri dalam blok akhirnya. Walau bagaimanapun, jika s merujuk objek boleh ubah (yang String bukan), mengubah suai kandungan objek dalam blok akhirnya akan ditunjukkan dalam nilai yang dikembalikan.

Spesifikasi Undang-undang

Spesifikasi Bahasa Java (JLS) menyediakan garis panduan terperinci untuk operasi ini dalam Bahagian 14.20.2. Dalam bahagian ini, ia menyatakan bahawa pernyataan pulangan dalam blok cubaan merupakan penamatan secara tiba-tiba. Akibatnya, Seksyen 14.17 menerangkan bahawa pernyataan pemulangan secara tiba-tiba menamatkan pelaksanaan blok.

Pengendalian Pengecualian dan Penyata Pemulangan

Jika kedua-dua blok cuba dan akhirnya blok ditamatkan secara tiba-tiba kerana pemulangan penyataan, peraturan daripada §14.20.2 terpakai:

  • Jika blok cuba terkeluar secara tiba-tiba disebabkan oleh sebab selain pengecualian yang dilemparkan, blok akhirnya dilaksanakan. Pernyataan cubaan kemudiannya dilengkapkan secara tiba-tiba atas sebab yang sama.
  • Jika blok akhirnya terkeluar secara tiba-tiba atas sebab S, pernyataan cuba dilengkapkan secara tiba-tiba untuk sebab S, membuang sebab asal.

Akibat daripada peraturan ini ialah pernyataan pulangan dalam blok akhirnya menentukan nilai pulangan keseluruhan pernyataan cuba-akhir, mengatasi nilai pulangan daripada blok cuba. Fenomena yang serupa berlaku dalam pernyataan cuba-tangkap-akhirnya di mana pengecualian dilemparkan dalam blok cuba dan dikendalikan oleh blok tangkapan, dan kedua-dua blok tangkapan dan akhirnya mengandungi pernyataan pulangan.

Atas ialah kandungan terperinci Mengapa Penyata Pulangan dalam Blok Akhirnya Mengatasi Nilai Pulangan Blok Cuba?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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