如何检测catch语句中是否发生了throw语句?

时间:2014-07-15 17:54:32

标签: java static-analysis soot

我正在尝试识别在catch块中发生throw语句的情况。例如:

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

是否可以访问每个catch块的显式开始/结束范围来迭代其单位以检查是否存在throw语句?我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

如果您只想将此作为静态代码分析,我建议您在IDE的查找操作中使用正则表达式来定位catch括号内的throw的任何实例。 IntelliJ当然支持。