如果沒有值,則丟擲異常

如果尚未設定,則使用 OptionalorElseThrow() 方法獲取包含的值或丟擲異常。這與呼叫 get() 類似,不同之處在於它允許任意異常型別。該方法需要一個必須返回丟擲異常的供應商。

在第一個示例中,該方法只返回包含的值:

Optional optional = Optional.of("something");

return optional.orElseThrow(IllegalArgumentException::new);
// returns "something" string

在第二個示例中,該方法丟擲異常,因為尚未設定值:

Optional optional = Optional.empty();

return optional.orElseThrow(IllegalArgumentException::new);
// throws IllegalArgumentException

如果需要使用訊息丟擲異常,也可以使用 lambda 語法:

optional.orElseThrow(() -> new IllegalArgumentException("Illegal"));