如何记录错误并在 orElseThrow() 子句中抛出异常?
How to Log error and throw an exception inside orElseThrow() clause?
我想记录错误并在 orElseThrow() 子句中抛出异常。我需要准备合适的供应商:
工作代码:
Optional<Integer> op = Optional.of(24832);
op.orElseThrow(() -> new RuntimeException());
如何记录错误并立即抛出异常:
op.orElseThrow({
Logger.error("Incorrect value");
() -> new RuntimeException();
});
orElseThrow
需要一个 Supplier
作为参数: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();
})
我想记录错误并在 orElseThrow() 子句中抛出异常。我需要准备合适的供应商:
工作代码:
Optional<Integer> op = Optional.of(24832);
op.orElseThrow(() -> new RuntimeException());
如何记录错误并立即抛出异常:
op.orElseThrow({
Logger.error("Incorrect value");
() -> new RuntimeException();
});
orElseThrow
需要一个 Supplier
作为参数: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();
})