2017-02-28 80 views
-4

我有下面的代碼爲什麼在IF語句否定比較調用方法

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

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

和代碼本身是自我解釋,直到我注意到,有沒有其他聲明,然而,方法handleOptions和initConfig是調用並執行。這是如何運作的?據我所知,如果條款(在這種情況下)的參數要麼確定爲真,然後拋出異常,或者,他們是假的在這種情況下,我會期望其他,但我沒有看到一個和代碼是仍然執行。

+0

嘗試調試代碼。 – kamehl23

+5

你對'if'語句的作用有一個困惑的理解。 – khelwood

+3

「if子句(在這種情況下)或者被確定爲真,然後拋出異常,或者」* what *?沒有! – luk2302

回答

4

該函數的調用第一,那麼它的返回值被測試以確定是否進入所述塊的主體中​​。

另一種方式把它是這樣的:

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

是完全一樣,但沒有變:

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

如果你仔細想想,它是那樣;我們無法知道調用該函數的結果是否與給定條件匹配,而無需調用該函數並獲取其結果。


如果(在這種情況下)子句的參數或者確定正確,然後拋出異常

if不拋出異常。 (表達可能被測試,但if本身並沒有。)

...或者,他們是假的在這種情況下,我希望別的,但我沒有看到一個,並且仍然執行代碼。

else是可選的。如果沒有一個,而且條件是錯誤的,那只是沒有任何反應。 :-)

+1

ahhh,我看到我思考中的根本錯誤,感謝您解釋。定時器熄滅後,我會盡快接受答覆。 –