제 생각에 throw
은 원시 jvm 명령입니다. 이것을 호출하면 JVM은 "현재 호출 스택이이를 catch 할 수 있는지 확인합니다". 그럴 수 없다면 자바는 반환이 호출 된 것처럼 거의 호출 스택을 팝합니다. jvm은 "현재 호출 스택이 그것을 catch 할 수 있는지 검사합니다"등등을 재귀 적으로 수행합니다.JVM은 런타임시 예외를 잡는 위치를 어떻게 알 수 있습니까?
내 질문 : 알고리즘 적으로 JVM이 호출 스택에서 주어진 예외를 잡을 수있는 위치를 알 수있는 방법은 무엇입니까? 코드 블록에 예외를 매핑하는 각 호출 스택 항목에 저장된 메타 데이터가 있습니까? 어떻게 든 추적 할 수있는 정적 데이터 구조가 힙에 있습니까? 어딘가에 데이터를 추적해야하기 때문입니다.
관련 항목 : http://stackoverflow.com/questions/10301244/how-is-multicatch-implemented-in-java-7 – assylias