जावा 8 के कार्यात्मक सुविधाओं इस सवाल का अतुलनीय अधिक महत्वपूर्ण बनाता है पकड़ने के लिए की है। जब तक हम बड़े पैमाने पर रिकर्सन का उपयोग करना शुरू करते हैं, तब स्टैक ओवरफ्लो एक्सेप्शन कुछ ऐसा है जिसे हमें गिनना चाहिए।
जावा 8 लैम्ब्डा प्रकारों में से कोई भी नहीं है जो StackOverflowException फेंकता है। तो, हमें ऐसा बनाना है। यह बिल्कुल जरूरी है, इसके बिना हम आईडीई नियंत्रण भी पारित नहीं करेंगे।
उदाहरण के लिए, पूर्णांक -> पूर्णांक समारोह प्रकार के रूप में दे सकता है:
@FunctionalInterface
public interface SoFunction <U> {
public U apply(Integer index) throws StackOverflowException;
}
उसके बाद हम एक समारोह lambdas फेंकने StackOverflowException को स्वीकार करेंगे कि लिख सकते हैं।
public T get(int currentIndex) throws StackOverflowException{
और केवल अब हम एक पुनरावर्ती लैम्ब्डा बना सकते हैं:
fiboSequence.setSequenceFunction(
(i) ->
fiboSequence.get(i-2).add(fiboSequence.get(i-1))
);
उसके बाद हम पुनरावर्ती श्रृंखला fiboSequence.get(i)
फोन और एक परिणाम या एक StackOverflowException प्राप्त करता है, तो पूरी श्रृंखला बेशुमार था कर सकते हैं।
रिकर्सन के उपयोग के मामले में SO को बिल्कुल अलग अर्थ मिलता है: आप बहुत गहरे कूद गए हैं, इसे अधिक उथले कदमों में विभाजित कर दोहराएं।
रोकथाम को पकड़ने से बेहतर है .... –
पकड़ने डीबगिंग के लिए उपयोगी है :) – JonnyBoy