结构替换以删除异常

时间:2012-01-25 11:45:43

标签: 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;
}

1 个答案:

答案 0 :(得分:3)

搜索模式:

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并选中“安全删除(使用搜索)”。