如果沒有值,則丟擲異常
如果尚未設定,則使用 Optional
的 orElseThrow()
方法獲取包含的值或丟擲異常。這與呼叫 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"));