在Eclipse中,如何找到抛出特定异常的Java代码?

在Eclipse中,如何找到抛出特定异常的Java代码?,java,eclipse,exception,code-analysis,static-analysis,Java,Eclipse,Exception,Code Analysis,Static Analysis,当试图理解Java代码时,我有时希望找到抛出某个自定义异常(即Java.lang.exception的子类)的所有代码 为此,在Eclipse中,我可以对异常类使用“查找引用”。但是,它同时查找抛出异常的位置和捕获异常的位置 有没有办法专门查找引发特定异常的代码 相关问题: 然而,这个问题是关于在单个代码块中查找所有位置,而我的问题是关于在项目的多个类中查找所有位置。在IntelliJ中,您可以执行所谓的“结构搜索”。使用此结构搜索“new A()”可以找到下面使用的所有3个实例化: priv

当试图理解Java代码时,我有时希望找到抛出某个自定义异常(即
Java.lang.exception
的子类)的所有代码

为此,在Eclipse中,我可以对异常类使用“查找引用”。但是,它同时查找抛出异常的位置和捕获异常的位置

有没有办法专门查找引发特定异常的代码


相关问题:


然而,这个问题是关于在单个代码块中查找所有位置,而我的问题是关于在项目的多个类中查找所有位置。

在IntelliJ中,您可以执行所谓的“结构搜索”。使用此结构搜索“new A()”可以找到下面使用的所有3个实例化:

private static class A { }

public static void main(String[] args) {
    new A();

    new

            A();

    new    A(


    );
}

提示在Eclipse中使用regex进行“简单”搜索,并尽可能在regex表达式中使用
\W
来“忽略”换行符、空格、制表符等,从而实现同样的效果。
new(\W+)a(\W*)\(
实际上效果很好


我知道这不是一个完整的答案,但也许你可以找到更多了解IntelliJ用于此目的的术语的信息

在IntelliJ中,你可以进行所谓的“结构搜索”。使用此结构搜索“new a()”可以找到下面使用的所有3个实例:

private static class A { }

public static void main(String[] args) {
    new A();

    new

            A();

    new    A(


    );
}

提示在Eclipse中使用regex进行“简单”搜索,并尽可能在regex表达式中使用
\W
来“忽略”换行符、空格、制表符等,从而实现同样的效果。
new(\W+)a(\W*)\(
实际上效果很好


我知道这不是一个完整的答案,但也许您可以了解IntelliJ为此目的使用的术语,通过使用,并将匹配限制为实例创建,这是可能的


说明:

  • 打开“Java搜索”(菜单“搜索”/“Java…”或工具栏图标)
  • 作为搜索词,输入要查找的异常的完全限定名称
  • “搜索”:“类型”
  • “限制为”:“匹配位置”,然后在链接的详细信息选择中,仅选择“类实例创建”

两个限制:

  • 这还将找到创建异常而不抛出异常的代码(不常见,但可能)
  • 这将找不到捕获然后重新引发异常的代码—这可能是您想要的,也可能不是您想要的

受。

的启发,可以使用,并将匹配限制为实例创建


说明:

  • 打开“Java搜索”(菜单“搜索”/“Java…”或工具栏图标)
  • 作为搜索词,输入要查找的异常的完全限定名称
  • “搜索”:“类型”
  • “限制为”:“匹配位置”,然后在链接的详细信息选择中,仅选择“类实例创建”

两个限制:

  • 这还将找到创建异常而不抛出异常的代码(不常见,但可能)
  • 这将找不到捕获然后重新引发异常的代码—这可能是您想要的,也可能不是您想要的

受.

启发,假设我们不讨论像NPE或ClassCastException这样的间接抛出,并且假设我们在创建异常的地方抛出异常,那么您可以调用异常构造函数的调用层次结构


Eclipse的“调用层次结构”不仅可以在方法上使用,还可以在类上使用-然后它将显示所有构造函数调用。使用Exception类上的调用层次结构来查找构造函数调用,即使在第三级库中也是如此。

假设我们不是在讨论NPE或ClassCastException之类的间接抛出,并且假设我们在c创建异常时,可以调用异常构造函数的调用层次结构


Eclipse的“调用层次结构”不仅可以用于方法,还可以用于类,然后它将显示所有构造函数调用。使用Exception类上的调用层次结构,即使在三级库中也可以查找构造函数调用。

也许可以搜索
新的YourExceptionType(
抛出您的ExceptionType
或搜索异常构造函数的引用。@luk2302:是的,我考虑过。但是,我希望使用“真实”代码搜索,而不是字符串搜索(这会被断行、注释等抛出)。好的,然后搜索构造函数的用法您的异常或常规:类的实例化-不确定如何/是否在Eclipse中实现。@luk2302:是的,刚刚发现这是可能的-请参阅我的答案:-)。可能搜索
新的YourExceptionType(
抛出您的ExceptionType
或搜索异常构造函数的引用。@luk2302:是的,我考虑过。但是,我希望使用“真实”代码搜索,而不是字符串搜索(这会被断行、注释等抛出)。好的,然后搜索构造函数的用法关于异常或常规:类的实例化-不确定如何/是否在Eclipse中实现。@luk2302:是的,刚刚发现这是可能的-请参阅我的答案:-)。我在发布问题后几分钟就找到了此解决方案。这将显示如何继续提问,从而为您提供新的想法:-)。我在发布问题后几分钟就找到了此解决方案。这将显示提问是如何给您带来新想法的:-)。您好,感谢您的回答!我对其进行了编辑以澄清,希望您不介意。很好-这是一种较短的方法,可以找到与我自己的答案相同的结果。请注意,同样的注意事项也适用(因为它发现异常创建,而不是异常抛出)。嗨,谢谢你的回答!我编辑它是为了澄清,希望你不介意。很好-这是一个较短的方法,可以找到与我自己的答案相同的结果。请注意,同样的注意事项适用(因为它发现异常创建,而不是异常)