try
เสร็จสมบูรณ์บล็อกที่มีการดำเนินการของreturn
คำสั่งและความคุ้มค่าของs
ในขณะที่return
คำสั่งดำเนินการเป็นค่าส่งกลับโดยวิธีการ ความจริงที่ว่าfinally
ข้อในภายหลังเปลี่ยนค่าของs
(หลังจากreturn
คำสั่งเสร็จสมบูรณ์) ไม่ได้ (ณ จุดนั้น) เปลี่ยนค่าตอบแทน
โปรดทราบว่าข้อตกลงด้านบนเกี่ยวข้องกับการเปลี่ยนแปลงมูลค่าของs
ตัวเองในfinally
บล็อกไม่ใช่วัตถุที่s
อ้างอิง หากs
มีการอ้างอิงถึงวัตถุที่ไม่แน่นอน (ซึ่งString
ไม่ใช่) และเนื้อหาของวัตถุถูกเปลี่ยนแปลงในfinally
บล็อกการเปลี่ยนแปลงเหล่านั้นจะถูกมองเห็นในค่าที่ส่งคืน
กฎรายละเอียดสำหรับวิธีการดำเนินการทั้งหมดนี้สามารถพบได้ในมาตรา 14.20.2 ของ Java Language ข้อกำหนด โปรดทราบว่าการประมวลผลreturn
คำสั่งจะนับเป็นการยกเลิกtry
บล็อกอย่างกะทันหัน(ส่วนที่เริ่มต้น " หากการดำเนินการบล็อกลองเสร็จสมบูรณ์ในทันทีด้วยเหตุผลอื่นใดก็ตาม R .... " ใช้) ดูส่วนที่ 14.17 ของ JLSเพราะเหตุใดreturn
คำสั่งจึงสิ้นสุดการบล็อกโดยทันที
โดยรายละเอียดเพิ่มเติม: หากทั้งtry
บล็อกและfinally
บล็อกของtry-finally
คำสั่งสิ้นสุดลงอย่างกะทันหันเนื่องจากreturn
คำสั่งให้ใช้กฎต่อไปนี้ตั้งแต่ 14.20.2:
หากการดำเนินการtry
บล็อกเสร็จสมบูรณ์ในทันทีด้วยเหตุผลอื่นใด R [นอกเหนือจากการโยนข้อยกเว้น] finally
บล็อกนั้นจะถูกดำเนินการและจากนั้นก็มีทางเลือก:
- หาก
finally
บล็อกดำเนินการตามปกติtry
คำสั่งจะเสร็จสมบูรณ์โดยทันทีด้วยเหตุผล R
- หาก
finally
บล็อกเสร็จสมบูรณ์อย่างกะทันหันด้วยเหตุผล S try
คำสั่งนั้นจะเสร็จสมบูรณ์ทันทีสำหรับเหตุผล S (และเหตุผล R ถูกยกเลิก)
ผลลัพธ์คือreturn
คำสั่งในfinally
บล็อกจะกำหนดค่าส่งคืนของtry-finally
คำสั่งทั้งหมดและค่าที่ส่งคืนจากtry
บล็อกนั้นจะถูกยกเลิก สิ่งที่คล้ายกันเกิดขึ้นในtry-catch-finally
คำสั่งถ้าtry
บล็อกส่งข้อยกเว้นมันถูกcatch
บล็อกโดยบล็อกและทั้งcatch
บล็อกและfinally
บล็อกมีreturn
คำสั่ง