तुलना चार्ट
तुलना का आधार | फेंकना | फेंकता |
---|---|---|
बुनियादी | थ्रो कीवर्ड हमारे बनाए हुए अपवाद ऑब्जेक्ट को JVM को मैन्युअल रूप से हैंडओवर करता है। | थ्रो कीवर्ड का उपयोग विधि के कॉलर को अपवाद हैंडलिंग की जिम्मेदारी सौंपने के लिए किया जाता है। |
वाक्य - विन्यास | फेंकने योग्य उदाहरण; | return_type method_name (पैरामीटर-सूची) ExceptionClass_list फेंकता है { // शरीर की विधि } |
के बाद | थ्रो कीवर्ड अपवाद वस्तु द्वारा पीछा किया जाता है। | थ्रो कीवर्ड उस अपवाद कक्षाओं की सूची के बाद है जो विधि में हो सकता है। |
अपवाद की संख्या फेंक दी गई | थ्रो कीवर्ड एकल अपवाद उदाहरण को फेंक सकता है। | थ्रो कीवर्ड अल्पविराम द्वारा अलग किए गए कई अपवाद वर्गों की घोषणा कर सकता है। |
फेंक की परिभाषा
कीवर्ड " थ्रो " का उपयोग मैन्युअल रूप से JVM (जावा वर्चुअल मशीन) के लिए हमारे बनाए गए अपवाद उदाहरण को सौंपने के लिए किया जाता है। यदि "फेंक" का उपयोग अपवाद उदाहरण को फेंकने के लिए नहीं किया जाता है और अपवाद होता है, तो रनटाइम सिस्टम आंतरिक रूप से अपवाद उदाहरण को जेवीएम में फेंक देता है और प्रोग्राम असामान्य रूप से समाप्त हो जाता है। थ्रो कीवर्ड का सामान्य रूप है:
फेंक फेंकने योग्य_बांस;
Throwable_instance के ऊपर, Throwable वर्ग का ऑब्जेक्ट होना चाहिए। प्राइमरी प्रकार जैसे कि इंट, फ्लोट या चार और नॉन-थ्रोबल श्रेणी का उदाहरण थ्रो कीवर्ड का उपयोग करके नहीं फेंका जा सकता है।
आइए हम खोजशब्द फेंक को समझने के लिए एक उदाहरण लेते हैं।
कक्षा टेस्ट {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {फेंकना नया अंकगणित अपवाद ("/ शून्य से"); }}
उपरोक्त कोड में, कीवर्ड थ्रो अपवाद श्रेणी "ArithmeticException" का एक उदाहरण फेंकता है। यदि थ्रो कीवर्ड का उपयोग नहीं किया गया था, तो मुख्य () विधि ने आंतरिक रूप से एक अपवाद वस्तु बनाई होगी जो जेवीएम को सौंपी गई थी।
कीवर्ड थ्रो के बारे में याद रखने वाले बिंदु:
- यह अपवाद ऑब्जेक्ट को मैन्युअल रूप से JVM को सौंपता है।
- इसका उपयोग उपयोगकर्ता द्वारा परिभाषित अपवादों या अनुकूलित अपवादों के लिए किया जाता है।
- यदि मेमोरी को थ्रो कीवर्ड द्वारा फेंकी गई अपवाद ऑब्जेक्ट के लिए आवंटित नहीं किया गया है, तो एक रनटाइम अपवाद होता है, NullPointerException।
- थ्रो कीवर्ड अपने होने के तुरंत बाद प्रोग्राम का निष्पादन रोक देता है। हम सीधे फेंक बयान के बाद कोई बयान नहीं लिख सकते हैं। अगर हम फेंक स्टेटमेंट के बाद सीधे कोई स्टैमेंट लिखते हैं तो कंपाइलर कंप्लेन के दौरान एक एरर, अगम्य स्टेटमेंट दिखाएगा।
- थ्रोबल श्रेणी की केवल वस्तुओं को थ्रो कीवर्ड का उपयोग करके फेंक दिया जा सकता है। यदि फेंकी गई वस्तु थ्रोएबल की वस्तु नहीं है, तो हमें एक संकलन समय त्रुटि मिलती है “असंगत प्रकार। । आवश्यक java.lang.Throwable ”
ध्यान दें:
फेंक कीवर्ड का उपयोग C ++, JAVA, C # में किया जाता है, मैन्युअल रूप से एक अपवाद को फेंकने के लिए।
फेंकता की परिभाषा
" फेंकता " कीवर्ड का उपयोग विधि में होने वाले अपवाद को संभालने के लिए, इसकी कॉलर विधि को सौंपने के लिए किया जाता है। कॉलर विधि अपवाद को संभालने के लिए जिम्मेदार है यह किसी भी अन्य विधि या JVM हो सकता है। यह अपवाद वर्गों की सूची घोषित करता है जो विधि में हो सकती हैं।
थ्रोस कीवर्ड का उपयोग कंपाइलर को आश्वस्त करता है कि विधि में जो अपवाद हुआ है उसे कॉलर विधि द्वारा संभाला जाना है, इसलिए कोई संकलन त्रुटि नहीं होती है। लेकिन, कॉलर विधि को अपवाद को संभालना चाहिए या अपनी पदानुक्रम विधि के अपवाद को संभालने के लिए जिम्मेदारी सौंपनी चाहिए। जब रनटाइम अपवाद होता है, तब थ्रो कीवर्ड के उपयोग के बाद भी, यह प्रोग्राम की असामान्य समाप्ति को नहीं रोकता है। यदि कॉलर विधि मुख्य है (), डिफ़ॉल्ट रूप से JVM अपवाद को संभालता है।
थ्रो कीवर्ड का सामान्य रूप है:
return_type method_name (पैरामीटर-लिस्ट) अपवाद को फेंकता है Class_list {// पद्धति का शरीर}
हम देख सकते हैं कि थ्रेड कीवर्ड विधि के हस्ताक्षर के बाद दिखाई देता है, और इसमें अपवाद वर्गों की सूची हो सकती है जो विधि में हो सकती हैं। कीवर्ड थ्रो के बाद लिखे गए अपवाद वर्गों की सूची अल्पविराम द्वारा अलग हो जाती है।
आइए हम एक उदाहरण लेते हैं कि थ्रो कीवर्ड को समझने के लिए।
calss टेस्ट {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) इंटरप्टेड एक्ससेप्शन {थ्रेड स्लीप (10000) फेंकता है; }}
उपरोक्त कोड में, नींद () पद्धति का उपयोग करके कुछ समय के लिए सोने के लिए मुख्य धागा बनाया जाता है। अब, जब मुख्य विधि नींद में होती है, तो यह संभव है कि अन्य धागे मुख्य धागे को बाधित कर सकते हैं। लेकिन, थ्रो कीवर्ड का उपयोग मुख्य () विधि के हस्ताक्षर के बाद किया जाता है, इसलिए प्रोग्राम आसानी से संकलन करेगा। थ्रो कीवर्ड चेक किए गए अपवाद वर्ग InterruptedException की घोषणा कर रहा है। अब, यदि कोई अन्य थ्रेड मुख्य थ्रेड को रनटाइम के दौरान बाधित करता है, तो थ्रोस कीवर्ड उस अपवाद को मुख्य () विधि के कॉलर को सौंप देगा, जो कि JVM है। JVM कार्यक्रम को असामान्य रूप से समाप्त कर देगा।
थ्रो कीवर्ड के बारे में याद रखने वाले बिंदु:
- फेंके गए कीवर्ड का उपयोग केवल चेक किए गए अपवाद वर्गों को घोषित करने के लिए किया जाता है। अनियंत्रित अपवाद के लिए थ्रो कीवर्ड के उपयोग का कोई प्रभाव नहीं पड़ता है।
- यदि विधि स्वयं अपवाद को संभालना नहीं चाहती है, तो वह उस वर्ग के कॉलर विधि के अपवाद को उस थ्रेड कीवर्ड का उपयोग करके दर्शाती है।
- इसका उपयोग केवल कार्यक्रम के सुचारू संकलन की अनुमति देता है।
- यदि कोई अपवाद रनटाइम पर होता है, तो प्रोग्राम असामान्य रूप से फेंकता है, यहां तक कि थ्रोस कीवर्ड के उपयोग के बाद भी।
- कार्यक्रम के सामान्य समाप्ति के लिए कोशिश / कैच ब्लॉक का उपयोग करने की सिफारिश की जाती है यदि कोई अपवाद रनटाइम में होता है।
ध्यान दें:
कीवर्ड थ्रू केवल जावा में उपयोग किया जाता है। C ++ और C # थ्रो कीवर्ड का उपयोग नहीं करते हैं।
फेंक और फेंकता के बीच महत्वपूर्ण अंतर
- कीवर्ड थ्रो, जेवीएम को अपवाद हैंडलिंग की जिम्मेदारी को मैन्युअल रूप से सौंपता है जबकि, कीवर्ड फेंकता है, कोड के कॉलर पद्धति को अपवाद हैंडलिंग की जिम्मेदारी सौंपता है जहां अपवाद हुआ है।
- थ्रो कीवर्ड अपवाद वस्तु द्वारा पीछा किया जाता है जिसे वह जेवीएम को सौंपता है। दूसरी ओर, थ्रो कीवर्ड का अनुसरण अपवाद कक्षाओं द्वारा किया जाता है जो विधि में हो सकते हैं।
- थ्रो कीवर्ड एक एकल अपवाद ऑब्जेक्ट को एक बार में फेंक सकता है जबकि, थ्रो कीवर्ड एक समय में अल्पविराम द्वारा अलग किए गए कई अपवाद वर्गों की घोषणा कर सकता है।
निष्कर्ष:
अनुकूलित अपवाद के लिए थ्रो कीवर्ड का सबसे अच्छा उपयोग किया जाता है। थ्रो कीवर्ड की तुलना में अपवादों को संभालने के लिए ट्राई / कैच ब्लॉक सबसे अच्छा है।