JVM exception的实现
niveko
2010-03-31
想问下JVM里面exception的具体实现,看了些源码也不是很清楚。
在每个执行框架里面都有个exception的属性,每次调用完了方法就检查exception是否为空,如果不为空就查找catch block看有没有相应的处理代码,如果没有就继续抛出到上一层框架,那printStackTrace方法的时候是不是还要依次遍历抛出根异常的方法,或者在每一次抛出的时候就依次保存这个方法到一个列表中? 那如果JVM启用了JIT即时编译,那exception的处理方式又是怎样的呢? |
|
niveko
2010-03-31
恩,重新看了一下kaffe相关的代码,发现它是有个_exceptionFrame,它就是在每次在检查异常的时候把当前的方法加入到里面的一个列表上。然后在调用Throwable的printStackTrace的时候就依次循环一遍打印出来。不过在Jamvm里面却没有找到相关的代码,它只是调用printStackTrace,不过它都没存的话,到时怎么打印的出来,奇怪。
|