जांच अपवाद बनाम रनटाइम अपवाद
अपवाद विशेष प्रकार की घटनाएँ हैं, जो सामान्य कार्यक्रम प्रवाह को बाधित कर सकती हैं। नाम अपवाद "असाधारण घटना" से आता है। एक अपवाद फेंकना एक अपवाद वस्तु बनाने और इसे रनटाइम सिस्टम को सौंपने की प्रक्रिया है। जब रनटाइम सिस्टम अपवाद ऑब्जेक्ट प्राप्त करता है, तो यह कॉल स्टैक के भीतर इसे रिवर्स ऑर्डर (जिसमें विधियों को कॉल किया गया था) में ट्रेस करके इसे संभालने के लिए किसी को ढूंढने का प्रयास करेगा। रनटाइम सिस्टम सफल होता है यदि उसे अपवाद हैंडलर के साथ कोई विधि मिलती है। अपवाद हैंडलर कोड का एक ब्लॉक है जो आधिकारिक तौर पर उक्त अपवाद को संभाल सकता है।यदि रनटाइम सिस्टम एक उपयुक्त हैंडलर पाता है, तो यह अपवाद ऑब्जेक्ट को हैंडलर को पास कर देगा। इसे अपवाद को पकड़ना कहा जाता है। हालाँकि, यदि अपवाद को नियंत्रित नहीं किया जा सकता है, तो प्रोग्राम समाप्त हो जाएगा। जावा में, अपवाद थ्रोएबल क्लास से प्राप्त होते हैं। चेक किए गए अपवाद ऐसे अपवाद हैं जिन पर कंपाइलर द्वारा हैंडलिंग लागू की जाती है। रनटाइम अपवाद एक प्रकार के अपवाद हैं, जिन्हें कंपाइलर द्वारा चेक नहीं किया जाता है।
चेक्ड एक्सेप्शन क्या है?
जाँच किए गए अपवाद या तो java.lang.exception वर्ग की वस्तुएँ हैं या इसके उपवर्ग (java.lang. RuntimeException और इसके उपवर्गों को छोड़कर)। चेक किए गए अपवाद संकलन समय पर "चेक" किए जाते हैं। इसका मतलब है कि प्रोग्रामर को या तो इन अपवादों को पकड़ना या फेंकना होगा, अन्यथा संकलन शिकायत करेगा (एक कंपाइलर त्रुटि के कारण)। इस कारण से, कई चेक किए गए अपवाद प्रोग्रामर के लिए बहुत अच्छी तरह से जाने जाते हैं। उदाहरण के लिए, IOException और उसके उपवर्गों को अपवादों की जाँच की जाती है, और जब भी प्रोग्रामर किसी फ़ाइल तक पहुँचने या संशोधित करने के साथ काम कर रहा होता है, तो संकलक यह सुनिश्चित करने के लिए जाँच करता है कि प्रोग्रामर द्वारा सभी संभावित IOException का ध्यान रखा जाता है।
रनटाइम अपवाद क्या है?
रनटाइम अपवादों में java.lang. RuntimeException और इसके सभी उप वर्ग शामिल हैं। सैद्धांतिक रूप से बोलते हुए, वे चेक किए गए अपवादों के समान उद्देश्य की सेवा करते हैं, और उन्हें चेक किए गए अपवाद की तरह फेंका या संभाला जा सकता है, लेकिन उनका संचालन संकलक द्वारा लागू नहीं किया जाता है। इसलिए, रनटाइम अपवाद अनियंत्रित अपवादों के परिवार से संबंधित हैं। NullPointerException, NumberFormatEception, ClassCastException और ArrayIndexOutOfBoundsException जावा में सामान्य रनटाइम अपवाद हैं।
चेक किए गए अपवाद और रनटाइम अपवाद में क्या अंतर है?
हालांकि, प्रोग्राम के निष्पादन के दौरान चेक किए गए अपवाद और रनटाइम अपवाद दोनों ही अवांछित घटनाएँ हैं, उनके अपने अंतर हैं। चेक किए गए अपवाद हैंडलिंग को कंपाइलर द्वारा लागू किया जाता है, लेकिन रनटाइम अपवाद नहीं होते हैं। इसलिए, कोड को संकलित करने के लिए चेक किए गए अपवादों को फेंकना या संभाला जाना चाहिए, लेकिन रनटाइम अपवादों के संबंध में ऐसी कोई आवश्यकता नहीं है।नतीजतन, रनटाइम अपवाद त्रुटियों के साथ अनियंत्रित अपवाद श्रेणी से संबंधित हैं।
चेक किए गए अपवादों के साथ नुकसान यह है कि प्रोग्रामर को इसे संभालना पड़ता है, भले ही वह नहीं जानता कि कैसे। इसलिए, यदि प्रोग्रामर मूल को लपेटे बिना एक नया अपवाद फेंकता है, तो मूल अपवाद से संबंधित स्टैक ट्रेस खो जाएगा। यह वह जगह है जहाँ रनटाइम अपवाद काम आते हैं। क्योंकि सभी रनटाइम अपवादों को एक ही स्थान पर नियंत्रित किया जा सकता है, इस प्रकार प्रोग्रामर कम मात्रा में कोड लिख सकते हैं। दूसरी ओर, चूंकि चेक किए गए अपवादों को पकड़ा जाना चाहिए, इसलिए प्रोग्रामर के लिए कोई आश्चर्य की बात नहीं है। उसे हमेशा पता चलेगा कि कौन सा चेक अपवाद एक निश्चित विधि द्वारा फेंका जा सकता है। इसके विपरीत, प्रोग्रामर की जानकारी के बिना विभिन्न रनटाइम अपवादों को फेंका जा सकता है।