The try
blok Rampungkan dengan pelaksanaan return
pernyataan dan nilai s
pada saat return
pernyataan mengeksekusi adalah nilai yang dikembalikan oleh metode ini. Fakta bahwa finally
klausa kemudian mengubah nilai s
(setelah return
pernyataan selesai) tidak (pada saat itu) mengubah nilai kembali.
Perhatikan bahwa di atas berkaitan dengan perubahan nilai s
itu sendiri di finally
blok, bukan ke objek yang s
direferensikan. Jika s
referensi ke objek yang bisa berubah (yang String
tidak) dan isi objek diubah di finally
blok, maka perubahan itu akan terlihat pada nilai yang dikembalikan.
Aturan terperinci untuk bagaimana semua ini beroperasi dapat ditemukan di Bagian 14.20.2 dari Spesifikasi Bahasa Jawa . Perhatikan bahwa eksekusi return
pernyataan diperhitungkan sebagai penghentian mendadak try
blok (bagian mulai " Jika eksekusi blok coba selesai tiba-tiba karena alasan lain R .... " berlaku). Lihat Bagian 14.17 dari JLS untuk alasan mengapa suatu return
pernyataan tiba-tiba merupakan penghentian blok.
Dengan perincian lebih lanjut: jika try
blok dan finally
blok try-finally
pernyataan berakhir tiba-tiba karena return
pernyataan, maka aturan berikut dari §14.20.2 berlaku:
Jika eksekusi try
blok selesai tiba-tiba karena alasan lain R [selain melempar pengecualian], maka finally
blok dieksekusi, dan kemudian ada pilihan:
- Jika
finally
blok selesai secara normal, maka try
pernyataan selesai tiba-tiba karena alasan R.
- Jika
finally
blok selesai tiba-tiba karena alasan S, maka try
pernyataan lengkap tiba-tiba karena alasan S (dan alasan R dibuang).
Hasilnya adalah bahwa return
pernyataan di finally
blok menentukan nilai kembali seluruh try-finally
pernyataan, dan nilai yang dikembalikan dari try
blok dibuang. Hal serupa terjadi dalam try-catch-finally
pernyataan jika try
blok melempar pengecualian, ditangkap oleh catch
blok, dan baik catch
blok maupun finally
blok memiliki return
pernyataan.