Tag: stack unwinding

JVM如何知道在运行时捕获exception的位置?

根据我的理解, throw是一个灵长类似的jvm命令。 调用它时,JVM“检查当前调用堆栈是否可以捕获它”。 如果它不能,那么java只是简单地弹出调用栈,就像调用一个返回一样。 然后jvm“检查当前调用堆栈是否可以捕获它”等等递归。 我的问题:JVM在算法上如何知道调用堆栈中哪些地方可以捕获给定的exception? 每个调用堆栈条目中是否存储了元数据,将exception映射到代码块? 堆中是否有一个静态数据结构以某种方式跟踪它? 因为某处必须有数据跟踪。