我注意到,当Java代码中有finally子句时,总会生成.catchall来标识finally块或使用.catchall标签对其进行内联,但是我没有找到有关是否是案例或更多解释的在线信息,有人知道吗?

最佳答案

是的,finally块是可能会生成.catchall的一种情况。但是,它也可以用于其他用途。例如,它也可以在同步方法的情况下生成,以确保释放锁定。

捕获所有处理程序记录在dex-format规范中。具体来说,在code_item中包含的encode_catch_handler项中。

同样相关的是classfile specification中的等效数据。请参阅exception_table中的catch_type项。

10-08 16:41