为什么假如果会执行?

时间:2014-11-06 06:08:22

标签: java if-statement

以下是WSO2 SAMLSSORelyingPartyObject包中org.wso2.carbon.hostobjects.sso的代码段。

if (argLength != 1 || !(args[0] instanceof String)) {
    String errorMsg = "Invalid argument. SAML response is missing.";
    log.error(errorMsg);
    throw new ScriptException(errorMsg);
}

当我调试这个时,我看到即使这个if表达式求值为false,ScriptException也会执行。有人对此有解释吗?

修改

原因是我在eclipse IDE中调试了错误的jar。服务器jar版本不同于我正在调试的jar版本。即使IDE显示调试是在那一行。实际调试是在if块之外

1 个答案:

答案 0 :(得分:2)

你必须误解你在调试中看到的内容。如果if()中的完整逻辑表达式求值为false,则显示的括号内的代码将不会执行。也许异常是从其他地方引发的,或者完整的逻辑表达式实际上被评估为true。