Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

क्या Java में कंस्ट्रक्टर अपवाद फेंक सकता है?


हां, कंस्ट्रक्टर्स को Java में अपवाद फेंकने की अनुमति है।

एक कंस्ट्रक्टर एक विशेष प्रकार का मेथड है जिसका उपयोग ऑब्जेक्ट को इनिशियलाइज़ करने के लिए किया जाता है और इसका उपयोग new कीवर्ड का उपयोग करके क्लास का ऑब्जेक्ट बनाने के लिए किया जाता है, जहां एक ऑब्जेक्ट को क्लास के इंस्टेंस के रूप में भी जाना जाता है। क्लास के प्रत्येक ऑब्जेक्ट की अपनी स्थिति (इंस्टेंस वेरिएबल्स) होती है और उसकी क्लास के मेथड्स तक पहुंच होती है।

कंस्ट्रक्टर से अपवाद फेंकना

  • एक चेक्ड अपवाद का उपयोग इंस्टेंस बनाने का प्रयास करते समय एक वैध समस्या को इंगित करने के लिए किया जा सकता है, जबकि एक अनचेक्ड अपवाद आमतौर पर क्लाइंट कोड या कंस्ट्रक्टर में ही बग को इंगित करता है।
  • दोनों मामलों में, एक ऑब्जेक्ट वास्तव में हीप स्पेस में अलॉट किया जाता है, लेकिन इसका रेफरेंस रिटर्न नहीं किया जाता। ऑब्जेक्ट आंशिक रूप से इनिशियलाइज़्ड स्थिति में रहता है जब तक कि यह गार्बेज कलेक्ट न हो जाए। इसलिए हम निष्कर्ष निकालते हैं कि कंस्ट्रक्टर से ऑब्जेक्ट का रेफरेंस सेव करना (this रेफरेंस का उपयोग करके) एक जोखिम भरा काम है, क्योंकि हम एक अमान्य स्थिति में ऑब्जेक्ट तक पहुंच दे सकते हैं।
  • कंस्ट्रक्टर में अपवाद के बारे में ध्यान देने योग्य एक और महत्वपूर्ण बात रिफ्लेक्शन से संबंधित है। जब हमें खाली कंस्ट्रक्टर को क्लास ऑब्जेक्ट का उपयोग करके इनवोक करने की आवश्यकता होती है, उदाहरण के लिए test, हम कभी-कभी मेथड 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

  1. - Java में static ब्लॉक से अपवाद कैसे फेंकें?

    एक static ब्लॉक स्टेटमेंट्स का एक सेट है, जिसे JVM द्वारा main() मेथड के निष्पादन से पहले निष्पादित किया जाएगा। क्लास लोडिंग के समय यदि हम कोई गतिविधि करना चाहते हैं तो हमें उस गतिविधि को static ब्लॉक के अंदर परिभाषित करना होगा क्योंकि यह ब्लॉक क्लास लोडिंग के समय निष्पादित होता है। Static ब्लॉक स

  1. - क्या Java में एब्सट्रैक्ट क्लास का ऑब्जेक्ट बना सकते हैं?

    नहीं, हम एब्सट्रैक्ट क्लास का ऑब्जेक्ट नहीं बना सकते। लेकिन हम एब्सट्रैक्ट क्लास का एक रेफरेंस वेरिएबल बना सकते हैं। रेफरेंस वेरिएबल का उपयोग डेराइव्ड क्लासेस के ऑब्जेक्ट्स को रेफर करने के लिए किया जाता है (एब्सट्रैक्ट क्लास की सबक्लासेस)। एब्सट्रैक्ट क्लास का अर्थ है इम्प्लीमेंटेशन को छिपाना और य

  1. - Java में कस्टम अपवाद (Custom Exception) कैसे बनाएं?

    कभी-कभी एप्लिकेशन की आवश्यकताओं के आधार पर सार्थक अपवाद विकसित करना आवश्यक होता है। Java में हम Exception क्लास को एक्सटेंड करके अपने खुद के अपवाद (Custom Exceptions) बना सकते हैं। उपयोगकर्ता-परिभाषित अपवादों को Java में कस्टम अपवाद (Custom Exceptions) के नाम से भी जाना जाता है। कस्टम अपवाद बनाने