java - 结构替换以删除异常

标签 java refactoring intellij-idea replace structural-search

我想删除一个本不应该存在的异常。我在方法声明中找不到允许删除的模式。

这段代码:

public void method1(String param) throws ShouldHaveNeverExisted{
   System.out.println("Yo");
   //... 
}

public void method2WithoutParam() throws ShouldHaveNeverExisted{
   System.out.println("Yo");
   //... 
}

应该转换成:

public void method1(String param){
   System.out.println("Yo");
   //... 
}

public void method2WithoutParam(){
   System.out.println("Yo");
   //... 
}

以下模式检索我想要的但我找不到正确的替换模式。

class $Class$ { 
   $ReturnType$ $MethodName$($ParameterType$ $Parameter$) throws ShouldHaveNeverExisted;
}

最佳答案

搜索模式:

class $Class$ {
  $RetType$ $Method$($ParameterType$ $Parameter$) throws ShouldHaveNeverExisted, $ExceptionType$ {
      $SomeStatement$;
  }
}

替换模式:

class $Class$ {
  $RetType$ $Method$($ParameterType$ $Parameter$) throws $ExceptionType$ {
      $SomeStatement$;
  }
}

主要注意事项是“编辑变量”并为 $Method$ 变量打开“此变量是搜索目标”复选框(每次尝试,unfortunately)。此外,$SomeStatement$ 的最大计数必须是无限的。

然后 IDEA 11.0.1 会正确搜索。即使对于 throws 子句中的任何异常顺序。它甚至在单击“预览替换”按钮时显示正确的结果。 但实际上只是删除了找到的方法。 :(

这似乎是一个错误。请有人确认。

顺便说一句。如果您要在任何地方摆脱此异常,为什么不将“throws ShouldHaveNeverExisted”替换为常规的“Edit\Find\Replace in Path Ctrl+Shift+R”?

或者您可以在异常类上按 Del 并选中“安全删除(使用搜索)”。

关于java - 结构替换以删除异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9002171/

相关文章:

java - 如何在 IntelliJ IDEA 13 中将存储库添加到 "Indexed Maven Repositories"?

java - 比较 Eclipse 中的源

java - 如何在JLayeredPane的任意一层上使用图形(Piant组件)

javascript - 使用内联 JavaScript 重构代码

javascript - 如何重构重复的条件 Vue.js 代码?

ScalaTest v3 : why require to implement convertToLegacyEqualizer

java - 将不同类型对象的 JSON 转换为 java List 对象

java - 在 IntelliJ IDEA 中导入 Maven 依赖项

if-statement - Java8将长接口(interface)方法拆分为单独的方法

java - 在 IntelliJ IDEA 中导航到声明、类型声明、实现之间有什么区别?