为什么IF语句中的否定比较会调用方法

Why does negation comparison in IF statement invokes a method

我有以下代码

if ( !handleOptions(args) ) {
        return false;
    }

    if ( !initConfig() ) {
        logger.error("Error initializing configuration. Terminating");
        return false;
    }

代码本身是自我解释的,直到我注意到没有 else 语句,然而,方法 handleOptions 和 initConfig 被调用和执行。这是如何运作的?据我所知, if 子句(在这种情况下)的参数要么确定为真然后抛出异常,要么它们为假,在这种情况下我希望 else,但我没有看到,代码仍在执行。

函数首先被调用,然后测试其return值判断是否进入函数体街区。

另一种思考方式是:

if ( !handleOptions(args) ) {
    return false;
}

就是这样,但是没有变量:

boolean result = handleOptions(args);
if ( !result ) {
    return false;
}

如果您考虑一下,必须那样;如果不调用函数并获取结果,我们无法知道调用函数的结果是否符合给定的条件。


the parameters of if clause (in this case) are either determined true and then exception is thrown

if 不会抛出异常。 (被测试的表达式可能会,但 if 本身不会。)

..., or, they are false in which case I would expect else, yet I dont see one and code is still executed.

else 是可选的。如果没有,并且条件为假,则什么也不会发生。 :-)