किसी विधि को ओवरराइड करते समय हमें कुछ नियमों का पालन करने की आवश्यकता होती है जो एक अपवाद फेंकता है।
- जब पैरेंट क्लास मेथड चाइल्ड क्लास मेथड . कोई अपवाद नहीं है कोई भी चेक किया गया अपवाद नहीं फेंक सकता , लेकिन यह कोई भी अनियंत्रित अपवाद . फेंक सकता है ।
क्लास पैरेंट { void doSomething() {// ... }}क्लास चाइल्ड पैरेंट को बढ़ाता है { void doSomething() IllegalArgumentException को फेंकता है {// ...}}
- जब मूल वर्ग विधि एक या अधिक चेक किए गए अपवाद . फेंकता है , बाल वर्ग विधि कोई भी अनियंत्रित अपवाद फेंक सकता है ।
क्लास पेरेंट {शून्य doSomething () IOException फेंकता है, ParseException {//...} शून्य doSomethingElse () IOException फेंकता है {// ...}} क्लास चाइल्ड पैरेंट को बढ़ाता है {void doSomething() IOException फेंकता है {//। .. } void doSomethingElse () FileNotFoundException, EOFException {//...}}फेंकता है
- जब पैरेंट क्लास मेथड एक अनचेक . के साथ एक थ्रो क्लॉज है अपवाद , बाल वर्ग विधि अनचेक अपवाद . में से कोई भी या कोई भी संख्या नहीं फेंक सकता है , भले ही वे संबंधित न हों।
क्लास पैरेंट { void doSomething() IllegalArgumentException फेंकता है {// ...}} क्लास चाइल्ड पैरेंट को बढ़ाता है { void doSomething() थ्रो अरिथमेटिक एक्सेप्शन, BufferOverflowException { // ... }}
उदाहरण
आयात करें }}वर्ग SubClassTest SuperClassTest { public void test() { System.out.println("SubClassTest.test() method"); का विस्तार करता है; }}पब्लिक क्लास ओवरराइडिंग एक्सेप्शनटेस्ट {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) {सुपरक्लासटेस्ट एससीटी =नया सबक्लासटेस्ट (); कोशिश करें { sct.test (); } पकड़ें (IOException ioe) { ioe.printStackTrace (); } }}आउटपुट
SubClassTest.test() विधि