Bu metodun iki tane overload edilmiş hali var. Hangisini kullanırsak kullanalım amaç if/else cümlelerinden kurtulmak.
Örnek
Şöyle kod istemiyoruz
Optional<User> userOptional = userDao.findByCellNumber(cellNumber);if (!userOptional.isPresent()) {throw new UserNotFoundException("...");} else {User user = userOptional.get();//...}
Bunu şöyle istiyoruz
User user = userDao.findByCellNumber(cellNumber).orElseThrow(UserNotFoundException::new);
orElseThrow metodu
Açıklaması şöyle.
If the value is present, this method returns the contained value. Otherwise, it throws an exception to be created by the provided supplier.
Örnek
Şöyle yaparız.
Optional<Integer> anyOddInStream = Stream.of(2, 4, 6, 8)
.filter(x -> x % 2 == 1)
.findAny();
var current = anyOddInStream.orElseThrow();
orElseThrow metodu - Supplierİmzası şöyle
T orElseThrow(Supplier<? super T> exceptionSupplier)
Örnek
Şöyle yaparız.
Şöyle yaparız.
// exception could be replaced with any other
Integer opt = anyOddInStream.orElseThrow(
() -> new NoSuchElementException("No value present"));
Hiç yorum yok:
Yorum Gönder