为什么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
是可选的。如果没有,并且条件为假,则什么也不会发生。 :-)
我有以下代码
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
是可选的。如果没有,并且条件为假,则什么也不会发生。 :-)