Từ hiểu biết của tôi, throw
là lệnh jvm nguyên thủy. Khi điều này được gọi, JVM "kiểm tra xem ngăn xếp cuộc gọi hiện tại có thể bắt được nó không". nếu nó không thể, sau đó java chỉ đơn giản là bật ngăn xếp cuộc gọi gần như chính xác như một sự trở lại được gọi là. sau đó jvm "kiểm tra nếu ngăn xếp cuộc gọi hiện tại có thể bắt nó" và do đó trên đệ quy.Làm thế nào để JVM biết nơi để bắt một ngoại lệ khi chạy?
Câu hỏi của tôi: làm thế nào để thuật toán có thể cho JVM biết vị trí trong ngăn xếp cuộc gọi có thể bắt được một ngoại lệ nhất định? Có siêu dữ liệu được lưu trữ trong mỗi trường hợp ngoại lệ đối chiếu mục nhập ngăn xếp cuộc gọi tới các khối mã không? là có một cấu trúc dữ liệu tĩnh trong đống mà bằng cách nào đó theo dõi này? bởi vì một nơi nào đó phải có dữ liệu theo dõi điều đó.
liên quan: http://stackoverflow.com/questions/10301244/how-is-multi-catch-implemented-in-java-7 – assylias