मान लें कि मैं देखना चाहता हूं कि कोई ऑब्जेक्ट स्ट्रीम में मौजूद है या नहीं, और यदि यह मौजूद नहीं है, तो अपवाद फेंक दें। रिवर्स मेंएक वैकल्पिक <> मौजूद है
List<String> values = new ArrayList<>();
values.add("one");
//values.add("two"); // exception thrown
values.add("three");
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.orElseThrow(() -> new RuntimeException("not found"));
के बारे में क्या: एक तरह से मुझे लगता है कि कर सकता है orElseThrow
विधि का उपयोग किया जाएगा? मैं एक अपवाद फेंक करना चाहते हैं यदि कोई मिलान हो जाता है:
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.ifPresentThrow(() -> new RuntimeException("not found"));
मैं सिर्फ Optional
संग्रहीत कर सकती है, और कर isPresent
जांच के बाद:
Optional<String> two = values.stream()
.filter(s -> s.equals("two"))
.findAny();
if (two.isPresent()) {
throw new RuntimeException("not found");
}
वहाँ किसी भी तरह से इस ifPresentThrow
प्रकार प्राप्त करने के लिए है व्यवहार का? इस तरह से एक बुरा अभ्यास फेंकने की कोशिश कर रहा है?
values.stream()
.filter("two"::equals)
.findAny()
.ifPresent(s -> {
throw new RuntimeException("found");
});
'orElseThrow' की बात त्रुटि हैंडलिंग यदि मान मौजूद नहीं है के साथ एक गैर वैकल्पिक करने के लिए मूल्य कन्वर्ट करने के लिए है। जैसा कि आप रुचि रखते हैं, यदि मूल्य मौजूद है, तो इस उद्देश्य के लिए डिज़ाइन की गई विधि का उपयोग क्यों न करें: 'isPresent'? –