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

Find structurally catch blocks in IntelliJ IDEA

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

catch (IOException e)

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

catch ($Type$ $name$)

$name$ text/regexp set to `.`

可能的解决方案 1

尝试现有模板尝试。将变量 $ExceptionDcl$ 编辑为 text/regexp . 并启用 This variable is target of the search。带有多个 catch 块的 Try 语句只能用这种模式找到一次。

可能的解决方案 2

要在包含多个 catch 的 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$ 替换关键字的原因。