我想記錄一個錯誤并在 orElseThrow() 子句中拋出一個例外。我需要準備合適的供應商:
作業代碼:
Optional<Integer> op = Optional.of(24832);
op.orElseThrow(() -> new RuntimeException());
如何記錄錯誤并立即拋出例外:
op.orElseThrow({
Logger.error("Incorrect value");
() -> new RuntimeException();
});
uj5u.com熱心網友回復:
orElseThrow需要一個Supplieras 引數:https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/Optional.html#orElseThrow(java.util.function.Supplier)
所以你可以使用
orElseThrow(RuntimeException::new)
orElseThrow(() -> new RuntimeException())
或者,如果您需要 lambda 中的其他代碼,則可以使用常規代碼塊。由于您需要提供一個值,因此代碼塊最后需要return該值:
orElseThrow(() -> {
Logger.error("Incorrect value");
return new RuntimeException();
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446214.html
