【问题标题】:Point of exit from a method in JavaJava中方法的退出点
【发布时间】:2013-03-07 23:03:29
【问题描述】:

在 Eclipse 中,有没有办法在每个返回语句中不记录标志的情况下找到方法从哪个返回语句返回?

例如:

@Override
 public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (!(obj instanceof ABC)) {
        return false;
    }
    ABC other = (ABC) obj;
    if (var1 == null) {
        if (other.var1 != null) {
            return false;
        }
    } else if (!var1.equals(other.var1)) {
        return false;
    }
    return true;
}

在这种情况下,我如何找出我的 equals 方法返回的时间点?

【问题讨论】:

  • 使用调试器并在每个返回语句上设置一个断点。
  • 也许这就是为什么一个好的做法是每个函数只返回一个......
  • @Marvo 这行得通。我可以进入调试模式并逐行执行。我不想在此 equals 函数具有的 150 个返回值上放置断点。谢谢。
  • @AlastorMoody 也可以在方法的开头放一个断点,然后逐行单步执行方法。
  • @CoryKendall 这就是我所做的并成功地解决了问题。感谢大家的帮助。

标签: java eclipse debugging


【解决方案1】:

不,但更易于理解和调试友好的代码可以使用表示结果的布尔局部变量。

然后你可以用调试器看到谁在什么时候分配它以及返回之前的返回值。

【讨论】:

  • 如果我在变量声明处设置了断点,调试器会在访问变量时暂停吗?我将不得不尝试一下。
  • 它不会在每次访问时暂停,但您必须将变量分配给 false 而不是 return 并在最后处理布尔值。您可以在将变量分配为 false 的每个位置分配断点
【解决方案2】:

没有。这是一些人更喜欢单点退出的原因之一: Why should a function have only one exit-point?

还要注意关于该问题的第一条评论中的链接。

【讨论】:

    【解决方案3】:

    在调试模式下使用断点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2013-03-21
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      相关资源
      最近更新 更多