हां, निर्माता जावा में अपवाद फेंकने की अनुमति है।
एक निर्माता एक विशेष प्रकार की विधि है जिसका उपयोग ऑब्जेक्ट को इनिशियलाइज़ करने के लिए किया जाता है और इसका उपयोग नए कीवर्ड का उपयोग करके क्लास का ऑब्जेक्ट बनाने के लिए किया जाता है। , जहां किसी वस्तु को I . के रूप में भी जाना जाता है स्थिति एक वर्ग का। किसी वर्ग के प्रत्येक ऑब्जेक्ट की अपनी स्थिति होगी (इंस्टेंस चर ) और इसके वर्ग के तरीकों तक पहुंच।
एक कंस्ट्रक्टर से एक अपवाद फेंकें
- एक चेक किया गया अपवाद एक उदाहरण बनाने का प्रयास करते समय एक वैध समस्या को इंगित करने के लिए इस्तेमाल किया जा सकता है, जबकि एक अनचेक अपवाद आमतौर पर या तो क्लाइंट कोड में या कंस्ट्रक्टर में ही बग को इंगित करता है।
- दोनों ही मामलों में, वस्तु को वास्तव में हीप स्पेस में आवंटित किया जाता है , लेकिन इसका संदर्भ वापस नहीं किया जाता है। ऑब्जेक्ट आंशिक रूप से आरंभिक अवस्था में रहता है जब तक कि उसे कचरा एकत्र नहीं किया जाता है। इसलिए हम यह निष्कर्ष निकालते हैं कि ऑब्जेक्ट के संदर्भ को कंस्ट्रक्टर से ही सहेजना (इस का उपयोग करके) संदर्भ) एक जोखिम भरी बात है, क्योंकि हम किसी वस्तु को अमान्य स्थिति में एक्सेस दे सकते हैं।
- एक कंस्ट्रक्टर में अपवाद के बारे में ध्यान देने योग्य एक और महत्वपूर्ण बात प्रतिबिंब . से संबंधित है . जब हमें खाली कंस्ट्रक्टर का आह्वान करने की आवश्यकता होती है उदाहरण के लिए क्लास ऑब्जेक्ट का उपयोग करना परीक्षण , हम कभी-कभी test.newInstance() विधि का उपयोग करते हैं।
- कन्स्ट्रक्टर द्वारा फेंके गए किसी भी अपवाद को बिना किसी बदलाव के प्रचारित किया जाता है। दूसरे शब्दों में, newInstance() विधि चेक किए गए अपवाद को फेंक सकती है कि यह घोषणा भी नहीं करता।
उदाहरण
public class ConstructorExceptionTest { public ConstructorExceptionTest() throws InterruptedException { System.out.println("Preparing an Object"); Thread.sleep(1000); System.out.println("Object is ready"); } public static void main(String args[]) { try { ConstructorExceptionTest test = new ConstructorExceptionTest(); } catch (InterruptedException e) { System.out.println("Got interrupted..."); } } }
आउटपुट
Preparing an Object Object is ready