【问题标题】:Structural replace to delete an exception删除异常的结构替换
【发布时间】:2012-02-18 14:31:20
【问题描述】:

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

这段代码:

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;
}

【问题讨论】:

    标签: java refactoring intellij-idea replace structural-search


    【解决方案1】:

    搜索模式:

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

    【讨论】:

    • 我试过但是没有第一行和最后一行,idea表示不支持该模式!!!我可以使用 Ctrl+Shift+R 解决我的问题,但我想在结构查找和替换方面取得进展。
    • @Vadzim 你有没有让它正常工作?我得到相同的预览是正确的,实际替换删除方法行为。
    • @Jarrod,我重新检查了 IDEA 13.0.2,发现自 IDEA 11 以来没有任何进展。
    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2015-06-26
    • 2020-08-04
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多