(Đối với ngắn answer- Đọc đậm và nghiêng phần của câu trả lời)
Dòng chảy thực hiện theo các tài liệu Java 8. Nó cung cấp cho bạn các chi tiết. Bạn có thể suy ra việc thực hiện các câu lệnh trả về dựa trên những điều sau đây.
Tuyên bố thử với khối cuối cùng được thực hiện bằng cách thực hiện khối thử lần đầu tiên.
Sau đó, có một sự lựa chọn:
• Nếu thực hiện các khối try hoàn bình thường, sau đó khối cuối cùng được thực hiện, và sau đó là một sự lựa chọn:
- Nếu khối cuối cùng hoàn thành bình thường , sau đó câu lệnh thử hoàn thành bình thường.
- Nếu khối cuối cùng hoàn thành đột ngột vì lý do S, sau đó báo cáo kết quả thử hoàn đột ngột vì lý do S.
• Nếu thực hiện các khối try hoàn đột ngột vì một ném của một giá trị V, sau đó có một sự lựa chọn:
- Nếu kiểu thời gian chạy của V được gán tương ứng với một ngoại lệ bắt buộc lớp bất kỳ điều khoản bắt nào của câu lệnh thử, thì điều khoản bắt buộc đầu tiên (ngoài cùng bên trái) là . Giá trị V được gán cho tham số của mệnh đề bắt được chọn là và khối Lệnh bắt được thực thi.
Sau đó, có một sự lựa chọn:
> Nếu khối catch hoàn bình thường, sau đó khối cuối cùng được thực hiện. Sau đó, có một sự lựa chọn:
»Nếu khối cuối cùng hoàn thành bình thường, thì câu lệnh try hoàn tất bình thường.
»Nếu khối cuối cùng hoàn thành đột ngột vì bất kỳ lý do gì, thì câu lệnh try hoàn thành đột ngột vì lý do tương tự.
›Nếu khối catch hoàn thành đột ngột vì lý do R, thì khối cuối cùng được thực thi. Sau đó, có một sự lựa chọn:
»Nếu khối cuối cùng hoàn thành bình thường, sau đó báo cáo kết quả thử hoàn đột ngột vì lý do R.
» Nếu khối cuối cùng hoàn thành đột ngột vì lý do S thì thử câu lệnh hoàn thành đột ngột vì lý do S (và lý do R bị hủy).
- Nếu kiểu thời gian chạy của V không phải là nhiệm vụ tương thích với một lớp ngoại lệ catchable của bất kỳ mệnh đề catch của câu lệnh try, sau đó khối cuối cùng được thực thi.
Sau đó, có một sự lựa chọn:
> Nếu khối cuối cùng hoàn thành bình thường, sau đó báo cáo kết quả thử hoàn đột ngột vì một ném của V. giá trị
> Nếu khối cuối cùng hoàn thành đột ngột cho lý do S, sau đó câu lệnh try hoàn thành đột ngột vì lý do S (và vứt bỏ giá trị V bị loại bỏ và bị lãng quên).
• Nếu thực hiện các khối try hoàn đột ngột đối với bất kỳ lý do R khác, sau đó khối finally được thực thi, và sau đó là một sự lựa chọn:
- Nếu khối cuối cùng hoàn thành bình thường, sau đó báo cáo kết quả thử hoàn thành đột ngột vì lý do R.
- Nếu khối cuối cùng hoàn thành đột ngột vì lý do S, thì câu lệnh thử hoàn thành đột ngột vì lý do S (và lý do R bị hủy).
lời giải thích rõ ràng trong việc này link- javaDoc
Ngôn ngữ nào trong đặc tả Java bạn có tin rằng điều này bị hỏng, điều đó sẽ yêu cầu một lỗi? –