सभी जावा कोड एक थ्रेड के संदर्भ में चलते हैं । लिंक किए गए JavaDoc त्रुटि से निपटने और बाहर निकलने के मानदंडों की व्याख्या करता है, लेकिन यहाँ इसका सार है:
- जेवीएम खुद को ऊपर उठाता है और निष्पादन वातावरण तैयार करता है।
- JVM एक थ्रेड बनाता है
main()
जो कि कमांड-लाइन मापदंडों के लागू होने पर विधि का उपयोग करेगा ।
- JVM एक डिफ़ॉल्ट अनकैप्ड अपवाद हैंडलर सेट करता है जो मानक त्रुटि के अपवाद को प्रिंट करता है और समाप्त करता है।
- JVM थ्रेड निष्पादित करता है।
अनियोजित अपवाद के मामले में, कार्यक्रम प्रभावी रूप से ऊपर तीसरे आइटम के अनुसार मर जाता है। यह व्यवहार जावा भाषा विनिर्देश, धारा 11.3 में निर्दिष्ट है
अतिरिक्त जानकारी
दूसरों ने स्थिर ब्लॉकों का उल्लेख किया है और वे पहले कैसे निष्पादित करते हैं main()
। हालांकि, इसे सही ढंग से समझने के लिए थोड़ा और स्पष्टीकरण की आवश्यकता है।
क्लास को लोड करते समय, क्लास लोडर को सभी static final
स्टेट को इनिशियलाइज़ करना होगा और क्लास को इस्तेमाल करने से पहले सभी static
ब्लॉक को चलाना होगा , क्लास के इंस्टेंटिमिटिंग इंस्टेंस को शामिल करने के लिए (एक तरफ: एक जावा क्लास बनाएँ जहाँ एक क्लास स्थैतिक को एक स्टैटिक ब्लॉक बनाने के बाद शुरू किया जाता है। वर्ग का उदाहरण, और कंस्ट्रक्टर स्थिर का संदर्भ देता है। बूम!)। हालाँकि, यह सभी किसी भी कोड को संदर्भित करने से पहले कक्षा लोडर तर्क में होता है । इसके अलावा, कक्षा को संदर्भित करने वाले थ्रेड में जो भी लोड किया जाता है।
इसका मतलब यह है कि यदि वर्ग main()
किसी अन्य वर्ग (जैसे वर्ग स्थिर) का संदर्भ देता है, तो उस वर्ग कोmain()
अपने स्थिर ब्लॉकों को शामिल करने के लिए निष्पादित करने से पहले लोड किया जाना चाहिए । अन्यथा, स्थिर ब्लॉकों को ऊपर के रूप में निष्पादित किया जाता है। यदि वर्ग लोड करने में विफल रहता है, तो वर्ग युक्त main()
भी लोड करने में विफल हो जाएगा और कार्यक्रम समाप्त हो जाएगा।
एक और FYI: स्टेटिक ब्लॉक फेंक सकते हैं । Errors
के रूप में फेंक दिया जाता है। Exceptions
निषिद्ध हैं (संकलन-समय त्रुटि)। ExceptionInInitializerErrorRuntimeExceptions
में लिपटे हुए हैं । ये ध्यान में न आया अपवाद संचालक, जब तक आप ध्यान से वर्ग संदर्भ (और लोड हो रहा है) एक में लपेट जो आम तौर पर या तो धागा या आवेदन (मुख्य थ्रेड) मार डालेगा प्रति नियंत्रित किया जाता है - ।try
catch