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

问题描述 投票:1回答:3

在尝试理解Java代码时,我有时想要找到抛出某个自定义异常(即java.lang.Exception的子类)的所有代码。

为此,在Eclipse中我可以在Exception类上使用“Find References”。但是,它会找到抛出的位置和捕获异常的位置。

有没有办法专门找到抛出某个异常的代码?


相关问题:Eclipse: find lines in a block that can throw exceptions

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

java eclipse exception code-analysis static-analysis
3个回答
1
投票

假设我们不是在谈论像NPE或ClassCastException这样的间接抛出,并假设我们在创建异常的地方抛出异常,您可以调用Exception构造函数的调用层次结构。

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


2
投票

这可以通过使用"Java Search",并将匹配限制为实例创建。


说明:

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

两个限制:

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

受到similar Eclipse bug 296947的启发。


2
投票

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

private static class A { }

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

    new

            A();

    new    A(


    );
}

enter image description here

https://www.quora.com/How-can-IntelliJ-style-Structural-Search-and-Replace-be-done-on-Eclipse暗示在Eclipse中做同样的事情,用正则表达式进行“简单”搜索,并在正则表达式中尽可能使用\W来“忽略”换行符,空格,制表符等.new(\W+)A(\W*)\(实际上工作得很好。

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

© www.soinside.com 2019 - 2024. All rights reserved.