2011-06-20 8 views
5

मैं जावा के रनटाइम अपवाद के नामकरण से उलझन में हूं। उन चेक अपवादों, जैसे कि SQLexception, भी एक प्रोग्राम के निष्पादन के दौरान होता है। क्यों केवल उन अनचेक किए गए जिन्हें रनटाइम अपवाद कहा जाता है? शायद मुझे "रनटाइम" की गलतफहमी है।रन-टाइम पर अपवादों की जांच होती है?

किसी भी सलाह के लिए धन्यवाद।

उत्तर

5

मैं आपके भ्रम को समझ सकता हूं। रनटाइम पर सभी अपवाद होते हैं!

एकमात्र कारण है कि मैं इस तरह से कक्षा का नामकरण करने के लिए आ सकता हूं, यह स्पष्ट करता है कि यह एक अपवाद है कि को संकलन समय पर निपटाया जाना नहीं है।

के रूप में अन्य सभी तथाकथित "जाँच" अपवाद का विरोध किया, RuntimeExceptions प्रोग्रामर की आवश्यकता नहीं है घोषित करने के लिए अपवाद एक throws खंड का उपयोग कर फेंक दिया है।

2

RuntimeExceptionjava.lang.Exception का उप-वर्ग है। RunTimeExceptions लगभग हमेशा एक प्रोग्रामिंग त्रुटि का परिणाम होता है या/और इनवेरिएंट को पूरा नहीं किया जा रहा है (जब उन्हें नहीं होना चाहिए तो नल को पारित किया जा रहा है), इसलिए आपको उन्हें java.lang.Exception (जिसे चेक अपवादों की तरह) पकड़ना नहीं है। आप उन्हें पकड़ नहीं पाते हैं क्योंकि रन टाइम सिस्टम ठीक होने के लिए बहुत कम कर सकता है।

मुझे लगता है कि वाक्यांश रनटाइम का मतलब है कि जब प्रोग्राम चल रहा है (स्पष्ट रूप से !!) और महत्वपूर्ण रूप से संकलक चेक किए गए अपवाद के साथ कोड में चेक को मजबूर नहीं करता है। मुझे लगता है कि यह एक उदाहरण है जहां कक्षा को उचित रूप से नाम देना मुश्किल है। मुझे लगता है कि वे डिफ़ॉल्ट रूप से अपवादों को अनचेक कर सकते हैं और इसे अपवाद कहा जाता है। फिर चेकडएक्सप्शन प्रदान करने के लिए इसे उप-वर्गीकृत किया गया - हर कोई java.lang को कॉल करता है। एक अपवाद अपवाद अपवाद, लेकिन यह वर्ग नाम से स्पष्ट नहीं है। लेकिन उन्होंने नहीं किया और हमारे पास है:

> java.lang.Exception is referred to as "Checked Exception" 
> java.lang.RuntimeException is referred to as "Unchecked Exception" 
संबंधित मुद्दे