2016-08-01 66 views
2

如果a是可選的[123]並且b是可選的[空白]。Java 8可選的orElse orElseThrow不一致

a.orElse(b.orElseThrow(() -> new UnexpectedInternalException(
        "Error"))) 

它爲什麼扔?

+0

它什麼都沒拋出 – Andrew

+4

你期望它做什麼? 'orElseThrow()'方法的設計是爲了拋出如果你的'Optional'缺失... – fge

回答

5

orElse()是一種方法,在執行該方法之前,將對其參數進行評估。在這種情況下,參數的評估(b.orElseThrow(() -> new UnexpectedInternalException("Error")))會引發異常。

+0

完美無缺 – Jor

5

因爲首先評估參數。這與可選項無關...

+0

完美無缺 – Jor