java - 如何检测catch中是否出现了throw语句?

标签 java static-analysis soot

我正在尝试识别 throw 语句出现在 catch block 内的情况。例如:

catch(MyException e){
   throw e;
}
catch(Exception e){
    throw new AnotherType();
}

是否可以访问每个 catch block 的显式开始/结束范围来迭代其单元,以检查是否存在 throw 语句?我知道如何做到这一点吗?

最佳答案

查看您的标签,我假设您正在使用 Soot。

您可以使用正在查看的 JimpleBody 的陷阱来确定语句是否位于 try/catch block 中。只需调用 body.getTraps() 即可。

关于java - 如何检测catch中是否出现了throw语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24764936/

相关文章:

java - 如何使用 Soot 在 APK 中创建和添加 Java 类?

java - JPA 删除 MySql 触发器

java - JSON - 使用 Gson 反序列化动态对象

java - Android/SQLite 对象关系映射的简单替代方案

git - linters 配置文件应该在 .gitignore 中吗?

go - 如何使用 go/analysis 找到 Ident 的声明?

java - 如何纯粹以编程方式配置 log4j 2.x?

Linux 内核内存泄漏目前已修复

java - 如何从 Soot 生成的调用图中排除 java 标准库?

java - 我可以使用 Soot 来查找给定起始类或方法的潜在执行路径和资源使用情况吗?