3

我看到一个奇怪的行为,我在一个try块中添加了一些代码,现在由于某种原因我得到了 spotbug 错误REC_CATCH_EXCEPTION(当没有抛出异常时捕获到异常)。

所以基本上最初,我的代码是这样的:

while (true) {
    try {
        if (something()) {
            doSomething();
        } else if (somethingElse()) {
            doSomethingElse();
        } else {
            do();
        }
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
}

当我运行上面的代码时,我没有收到任何 spotbug 错误。但是,当我添加新else if块时,我得到了REC_CATCH_EXCEPTION错误。所以我看到错误的新代码是这样的:

while (true) {
    try {
        if (something()) {
            doSomething();
        } else if (somethingElse()) {
            doSomethingElse();
        } else if (someOtherThing()) {
            doSomeOtherThing();
        } else {
            do();
        }
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
}

除了添加方法之外,没有什么真正改变doSomeOtherThing()。所以我不确定为什么我会看到这个错误。另外,请注意该doSomeOtherThing()方法不会在其中抛出或捕获任何异常。

4

0 回答 0