在IntelliJ IDEA中查找结构上的catch块

时间:2015-11-29 21:04:20

标签: java intellij-idea structural-search

我需要在Java代码中找到带有单字母catch参数的所有catch块,例如:

catch (IOException e)

我已经尝试了以下模式,但它不起作用:

catch ($Type$ $name$)

$name$ text/regexp set to `.`

1 个答案:

答案 0 :(得分:1)

可能的解决方案1 ​​

尝试使用现有模板尝试。将变量$ExceptionDcl$修改为text / regexp .并启用此变量是搜索的目标。使用此模式只能找到具有多个catch块的Try语句。

可能的解决方案2

要在具有多个捕获的try语句中查找单个catch块,请使用:

$E$ $e$

$ E $ Text / regexp:Throwable在类型层次结构中应用约束启用
$ e $ Text / regexp:.,脚本文字:__context__.parent instanceof com.intellij.psi.PsiCatchSection

背景信息

找不到孤独的捕获块是不可能的。要搜索语言,结构搜索使用IntelliJ IDEA中用于所有其他智能的解析器。这意味着在搜索Java时,每个模式都必须是有效的Java。因此,一个不幸的限制是,只有一个catch块不被解析成可以搜索的东西。这也是为什么不能用SSR模式中的$ variable $替换关键字的原因。