2014-11-06 4 views
-1

Это код фрагмента от SAMLSSORelyingPartyObject в WSO2 org.wso2.carbon.hostobjects.sso пакета.Почему false, если выполняется?

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

Когда я отлаживал это, я видел, хотя это выражение выражалось в false, ScriptException будет выполняться. у кого есть объяснение?

EDIT

Причина была я отладки в неправильном баночке в Eclipse IDE. Версия сервера jar отличается от версии jar, которую я отлаживал. хотя IDE показывает, что отладка была на этой линии. фактически отладка была за пределами if, если блок

+0

почему downvotes ..? – lakshman

+0

Что такое «это выражение»? Вы знаете, как работают заявления? Вы знаете, как работают булевы операторы? Можете ли вы объяснить, что вы понимаете, поэтому нам не нужно объяснять 20% Java в надежде поймать то, чего вы не делаете? Каковы были аргументы при отладке? Это все причины для downvote. – djechlin

+0

Командная строка всегда как 'string' – Rustam

ответ

2

Вы должны неправильно интерпретировать то, что видели в отладке. Если полное логическое выражение в if() вычисляется как false, то код внутри указанных скобок не будет выполняться. Возможно, исключение было выброшено из других источников, или полное логическое выражение, которое фактически оценивалось как true.