मुझे बताया गया था कि जावा में, अनचेक अपवादों को एक कोशिश ब्लॉक में पकड़ा जा सकता है, लेकिन यदि यह पकड़ा गया है, तो इसे चेक अपवाद नहीं कहा जाता है?जावा में एक चेक अपवाद को अवरुद्ध करने के प्रयास में पकड़ा गया एक अनचेक अपवाद नहीं है?
उत्तर
अनचेक अपवाद अपवाद हैं जिन्हें try
- catch
ब्लॉक में पकड़े जाने की आवश्यकता नहीं है। अनचेक अपवाद RuntimeException
या Error
कक्षाओं के उप-वर्ग हैं।
चेक अपवाद अपवाद हैं जिन्हें try
- catch
ब्लॉक में पकड़ा जाना आवश्यक है।
की जाँच की और अनियंत्रित अपवाद की परिभाषा The Java Language Specification की Section 11.2: Compile-Time Checking of Exceptions में पाया जा सकता है:
अनियंत्रित अपवाद कक्षाएं वर्ग
RuntimeException
और उसके उपवर्गों हैं, और वर्गError
और अपने उपवर्गों। अन्य सभी अपवाद कक्षाएं अपवाद कक्षाओं की जांच की जाती हैं।
सिर्फ इसलिए कि एक अनियंत्रित अपवाद एक catch
ब्लॉक में फंस जाता है यह एक जाँच अपवाद नहीं है - यह सिर्फ मतलब है कि अनियंत्रित अपवाद पकड़ा गया था, और catch
ब्लॉक में संचालित किया गया।
कोई catch
एक अनचेक अपवाद, और फिर throw
एक नया चेक अपवाद हो सकता है, इसलिए उस विधि को कॉल करने वाली कोई भी विधि जहां एक अनचेक अपवाद हो सकता है और किसी विधि को मजबूर कर सकता है जो इसे किसी प्रकार के अपवाद को संभालने के लिए कहता है।
उदाहरण के लिए, एक NumberFormatException
जो जब Integer.parseInt
विधि करने के लिए कुछ unparsable String
निपटने फेंकी जा सकती है एक अनियंत्रित अपवाद नहीं है, तो यह कैच होने की जरूरत नहीं है। हालांकि, विधि है कि विधि बुला अपने फोन करने वाले ठीक से, ऐसी समस्या को संभालने के लिए तो यह एक और अपवाद जो चेक किया गया है फेंक कर सकते हैं चाहते हो सकता है (RuntimeException
का एक उपवर्ग नहीं।):
public int getIntegerFromInput(String s) throws BadInputException {
int i = 0;
try {
i = Integer.parseInt(s);
catch (NumberFormatException e) {
throw new BadInputException();
}
return i;
}
उपरोक्त उदाहरण में, एक NumberFormatException
try
- catch
ब्लॉक में पकड़ा गया है, और एक नया BadInputException
(जिसे एक चेक अपवाद माना जाता है) फेंक दिया जाता है।
getIntegerFromInput
विधि के लिए कोई भी कॉलर BadInputException
को पकड़ने के लिए मजबूर किया जाएगा, और खराब इनपुट से निपटने के लिए मजबूर होना होगा। यदि NumberFormatException
को पकड़ा और संभाला नहीं गया था, तो इस विधि के किसी भी कॉलर को अपवाद को सही ढंग से संभालना होगा।
(इसके अलावा, यह ध्यान दिया जाना चाहिए, एक अपवाद खाने और कुछ है कि वास्तव में सार्थक नहीं माना जाता है एक अच्छा अभ्यास नहीं है कर -। अपवाद जहां सार्थक अपवाद संचालन किया जा सकता है संभाल)
जावा ट्यूटोरियल से :
- Lessons: Exceptions
- The Catch or Specify Requirement - जांचे हुए अपवादों की चर्चा।
- Chained Exceptions - उपरोक्त उदाहरण के रूप में अपवाद को पकड़ने और एक नया फेंकने का अभ्यास।
- Unchecked Exceptions — The Controversy
+1 अपवाद खाने और कुछ ऐसा करने के लिए जो वास्तव में सार्थक नहीं है, उसे एक अच्छा अभ्यास नहीं माना जाता है - अपवादों को संभालें जहां सार्थक अपवाद हैंडलिंग किया जा सकता है ' –
मुझे लगता है कि अंतर यह है कि संकलक झंडा होगा ध्यान में न आया अपवाद और तरीकों कि अपवाद जाँच फेंक लेकिन उन्हें संकलन समय पर विधि हस्ताक्षर में नहीं घोषित करते जाँच की है।
अनचेक अपवादों को घोषणा या पकड़ने की आवश्यकता नहीं है, लेकिन न ही निषिद्ध हैं। कंपाइलर सिर्फ उन्हें त्रुटियों के रूप में नहीं पहचानता है।
नहीं, इसे पकड़ा गया है क्योंकि इसे चेक अपवाद नहीं कहा जाता है। किसी भी प्रकार की अपवाद या त्रुटि को पकड़ने के लिए एक कैच ब्लॉक लिखा जा सकता है। चेक किए गए अपवाद वे हैं जो Catch or Specify Requirement के अधीन हैं, जिसका अर्थ है कि आप आवश्यक हैं या तो उन्हें पकड़ने या घोषित करने के लिए कि आपकी विधि उन्हें फेंक सकती है। आप शब्द पर विचार कर सकते हैं कि इसका अर्थ यह है कि संकलक यह सुनिश्चित करने के लिए जांच करेगा कि आप पकड़ या निर्दिष्ट आवश्यकता का पालन करते हैं। त्रुटियों और रनटाइम अपवादों को अनचेक अपवाद कहा जाता है क्योंकि संकलक इस आवश्यकता को लागू नहीं करता है।
- 1. अनचेक अपवाद जो चेक
- 2. जावा अपवाद नहीं पकड़ा
- 3. जावा में चेक किए गए बनाम अनचेक अपवाद
- 4. जावा में चेक/अनचेक किए गए कस्टम अपवाद कैसे बनाएं?
- 5. सी ++ - एक पकड़ा डिफ़ॉल्ट अपवाद
- 6. अपवाद के बाद अपवाद प्रकार निर्धारित करना पकड़ा गया है?
- 7. सी एक अपवाद पकड़ में पकड़ा (...)
- 8. चेक किए गए बनाम अनचेक अपवाद
- 9. जावा अपवाद पकड़ा नहीं जा रहा
- 10. जावा प्रतिबिंब और चेक अपवाद
- 11. जावा चेक अपवाद फ़ंक्शन के फेंक विनिर्देशन में नहीं है?
- 12. अनचेक अपवाद या रनटाइम अपवाद
- 13. अजगर - पकड़ा अपवाद
- 14. अक्षम Xdebug के पकड़ा अपवाद
- 15. अपवाद दो बार पकड़ा है
- 16. चेक अप और अनचेक किए गए अपवाद क्यों हैं?
- 17. आईई 8 में जीडब्ल्यूटी - अपवाद फेंक दिया गया और पकड़ा नहीं गया
- 18. जावा/सी # में चेक अपवाद क्या हैं?
- 19. जावा में अपना स्वयं का अनचेक अपवाद बनाना संभव है?
- 20. अपवाद पकड़ा गया लेकिन प्रोग्राम चल रहा है
- 21. पीएचपी अपवाद संचालकों द्वारा पकड़ा नहीं SoapFault
- 22. जावा में कक्षा IOException एक अनचेक RuntimeException होना चाहिए?
- 23. IDISposable के अंदर एक अपवाद को अवरुद्ध करना।
- 24. NullPointerException को चेक अपवाद के रूप में क्यों घोषित नहीं किया गया है
- 25. जावा में अंकगणित अपवाद फेंक दिया गया
- 26. जावा में एक सामान्य अपवाद पकड़ो?
- 27. पकड़ने का प्रयास अपवाद नहीं पकड़ता है?
- 28. एक शून्य मूल्य में जोड़ने का प्रयास क्यों नहीं करता एक अवैधऑपरेशन अपवाद फेंक देता है?
- 29. एक अपवाद
- 30. क्यों "java.lang.OutOfMemoryError: जावा हीप स्पेस" पकड़ा नहीं गया है?
"चेक" की विडंबना .... – Pacerier