java.lang.RuntimeException
या java.lang.Error
के उप-वर्गों को छोड़कर सभी Throwable
एस चेक किए गए हैं। उचित रूप से, जावा में, "अपवाद" java.lang.Exception
के उप-वर्ग हैं, "त्रुटियां" java.lang.Error
और java.lang.Throwable
के उप-वर्ग हैं, आमतौर पर सीधे उप-वर्गीकृत नहीं होते हैं।
कार्यक्रम एक RuntimeException
का उपयोग कर यदि आप इसे की जाँच की जा नहीं करना चाहती अपने स्वयं के Error
उपवर्गों बनाने के लिए (हालांकि प्रलेखन बल्कि उस पर अस्पष्ट है) तो आम तौर पर आप हमेशा Exceptions
बनाने नहीं जा सकते,।
रन-टाइम में पता करने के लिए यदि आप एक जाँच की अपवाद है आप इस्तेमाल कर सकते हैं:
if(throwable instanceof Exception && !(throwable instanceof RuntimeException)) {
// this is a checked Exception
}
एक अपवाद जाँच एक है जो या तो एक पकड़ने खंड में नियंत्रित किया जाना चाहिए, या घोषित में फेंक दिया जा रहा है के रूप में है विधि हस्ताक्षर; संकलक इसे लागू करता है। आम तौर पर, एक अपवादों के लिए चेक अपवादों का उपयोग करता है जिन्हें कॉलिंग कोड द्वारा संभाला जाना चाहिए, जबकि अनचेक अपवाद ऐसी स्थितियों के लिए हैं जो प्रोग्रामिंग त्रुटि का परिणाम हैं और कोड को सही करके तय किया जाना चाहिए।
ने कहा कि जावा समुदाय में चेक अपवाद बनाम अनचेक अपवादों का उपयोग करने की प्रभावकारिता के बारे में बहुत बहस है - इस उत्तर में चर्चा करने के लिए गहरी गहराई का विषय।
संपादित 2012-10-23: टिप्पणियों के जवाब में (जो काफी मान्य हैं), स्पष्ट करने के लिए, निम्नलिखित होगा क्या हुआ अगर एक पर कब्जा कर लिया Throwable
एक जाँच की Throwable
विपरीत है निर्धारित करने के लिए आवश्यक है एक जाँच की Exception
रहे हैं:
if(obj instanceof Throwable && !(obj instanceof RuntimeException) && !(obj instanceof Error)) {
// this is a checked Throwable - i.e. Throwable, but not RuntimeException or Error
}
प्रश्न में वस्तु जाना जाता हैThrowable
का उदाहरण होने के लिए (उदा। इसे पकड़ा गया था), उपरोक्त 'if' की केवल दूसरी भाग की आवश्यकता है (उदाहरण के लिए थ्रोबल के लिए परीक्षण अनावश्यक है)।
स्रोत
2010-03-10 17:19:51
यह उन अपवादों को याद करता है जो 'थ्रोबल' से प्राप्त होते हैं लेकिन 'अपवाद' से नहीं, जिन्हें चेक किया जाता है। आम तौर पर आपके पास: एक अनचेक 'अपवाद' टी संतुष्ट होगा: 't exampleof त्रुटि || टी उदाहरण का अपवाद ' अन्य सभी जो' थ्रोवेबल 'का उदाहरण है चेक किया गया है। एक त्रुटि सामान्य अर्थ में अपवाद का एक प्रकार है। – BeeOnRope
@ बीई: एक अर्थ में यह काफी सही है; लेकिन, 'त्रुटि *** *** त्रुटियां *** नहीं हैं *** अपवाद ***, और जावा नामकरण में भेद बनाता है (' त्रुटि 'हैंडलिंग एक और मामला है जहां सिद्धांत अभ्यास में विफल रहता है, लेकिन, मैंने सोचा, एक संबंधित अभी तक अलग चर्चा)। यही है, 'त्रुटि की भी जांच की जाती है, लेकिन जावा नामकरण में वे त्रुटियां हैं, अपवाद नहीं; हालांकि दोनों त्रुटियों और अपवाद 'थ्रोबल' हैं। जावा के अनुसार, एक 'त्रुटि' एक 'थ्रोबल' है लेकिन 'अपवाद' नहीं है (आमतौर पर अंग्रेजी में, 'त्रुटि' अपवाद हैं, लेकिन वे "अपवाद" नहीं हैं)। –
बिल्कुल। उस ने कहा, मैं एक विधि मानूंगा जो तय करता है कि एक फेंकने योग्य चेक किया गया था या नहीं, सभी चेक अपवादों के लिए सच नहीं होगा, न केवल अपवादों की जांच की।यही है, यह शब्द की छोटी और समझ लेगा। मैं उन चीज़ों को छोड़कर वैध उपयोग केस नहीं देख सकता जो 'थ्रोबल' बढ़ाते हैं लेकिन 'अपवाद' या 'त्रुटि' नहीं। वैसे भी आप उन्हें क्या कहते हैं? – BeeOnRope