Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में मेथड ओवरराइडिंग के संबंध में एक्सेप्शन हैंडलिंग के नियम क्या हैं?

जब एक सुपरक्लास मेथड एक्सेप्शन फेंकता है तो इसे ओवरराइड करते समय आपको कुछ नियमों का पालन करना होता है।

समान एक्सेप्शन या सबटाइप फेंकना चाहिए

यदि सुपरक्लास मेथड किसी खास एक्सेप्शन को फेंकता है, तो सबक्लास में मेथड को वही एक्सेप्शन या उसका सबटाइप फेंकना चाहिए।

उदाहरण

निम्नलिखित उदाहरण में, सुपरक्लास की readFile() मेथड IOEXception फेंकती है और सबक्लास की readFile() मेथड FileNotFoundException एक्सेप्शन फेंकती है।

चूंकि FileNotFoundException एक्सेप्शन IOException का सबटाइप है, यह प्रोग्राम बिना किसी एरर के कंपाइल और एक्जीक्यूट होता है।

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Scanner; 

abstract class Super { 
    public String readFile(String path) throws IOException { 
        throw new IOException(); 
    } 
} 

public class ExceptionsExample extends Super { 
    @Override 
    public String readFile(String path) throws FileNotFoundException { 
        Scanner sc = new Scanner(new File("E://test//sample.txt")); 
        String input; 
        StringBuffer sb = new StringBuffer(); 
        while (sc.hasNextLine()) { 
            input = sc.nextLine(); 
            sb.append(" " + input); 
        } 
        return sb.toString(); 
    } 
    
    public static void main(String args[]) { 
        String path = "E://test//sample.txt"; 
        ExceptionsExample obj = new ExceptionsExample(); 
        try { 
            System.out.println(obj.readFile(path)); 
        } catch (FileNotFoundException e) { 
            System.out.println("Make sure the specified file exists"); 
        } 
    } 
}

आउटपुट

Tutorials Point is an E-learning company that set out on its journey to provide knowledge to that class of readers that responds better to online content. With Tutorials Point, you can learn at your own pace, in your own space. After a successful journey of providing the best learning content at tutorialspoint.com, we created our subscription based premium product called Tutorix to provide Simply Easy Learning in the best personalized way for K-12 students, and aspirants of competitive exams like IIT/JEE and NEET.

उदाहरण

इसी तरह यदि सबक्लास सुपरक्लास के समान एक्सेप्शन फेंकता है तो प्रोग्राम सफलतापूर्वक कंपाइल और एक्जीक्यूट होता है।

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Scanner; 

abstract class Super { 
    public void sampleMethod() throws FileNotFoundException { 
        System.out.println("Method of superclass"); 
    } 
} 

public class ExceptionsExample extends Super { 
    public void sampleMethod() throws FileNotFoundException { 
        System.out.println("Method of Subclass"); 
    } 
    
    public static void main(String args[]) { 
        ExceptionsExample obj = new ExceptionsExample(); 
        obj.sampleMethod(); 
    } 
}

आउटपुट

Method of Subclass

सुपरटाइप का एक्सेप्शन नहीं फेंकना चाहिए

यदि सुपरक्लास मेथड किसी खास एक्सेप्शन को फेंकता है, तो सबक्लास में मेथड को उसका सुपरटाइप नहीं फेंकना चाहिए।

उदाहरण

निम्नलिखित उदाहरण में सुपरक्लास की readFile() मेथड FileNotFoundException एक्सेप्शन फेंकती है और सबक्लास की readFile() मेथड IOException फेंकती है, जो FileNotFoundException का सुपरटाइप है।

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Scanner; 

abstract class Super { 
    public String readFile(String path) throws FileNotFoundException { 
        throw new FileNotFoundException(); 
    } 
} 

public class ExceptionsExample extends Super { 
    @Override 
    public String readFile(String path) throws IOException { 
        // मेथड बॉडी ...... 
    } 
}

कंपाइल टाइम एरर

कंपाइल करने पर, उपरोक्त प्रोग्राम निम्नलिखित आउटपुट देता है:

ExceptionsExample.java:13: error: readFile(String) in ExceptionsExample cannot override readFile(String) in Sup
    public String readFile(String path)throws IOException {
                                                           ^
  overridden method does not throw IOException
1 error

बिना कोई एक्सेप्शन फेंके

यदि सुपरक्लास मेथड किसी खास एक्सेप्शन को फेंकता है, तो आप इसे बिना कोई एक्सेप्शन फेंके ओवरराइड कर सकते हैं।

उदाहरण

निम्नलिखित उदाहरण में सुपरक्लास की sampleMethod() मेथड FileNotFoundException एक्सेप्शन फेंकती है और sampleMethod() मेथड कोई एक्सेप्शन नहीं फेंकती। फिर भी यह प्रोग्राम बिना किसी एरर के कंपाइल और एक्जीक्यूट होता है।

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Scanner; 

abstract class Super { 
    public void sampleMethod() throws FileNotFoundException { 
        System.out.println("Method of superclass"); 
    } 
} 

public class ExceptionsExample extends Super { 
    public void sampleMethod() { 
        System.out.println("Method of Subclass"); 
    } 
    
    public static void main(String args[]) { 
        ExceptionsExample obj = new ExceptionsExample(); 
        obj.sampleMethod(); 
    } 
}

आउटपुट

Method of Subclass

  1. Java में String intern() मेथड की भूमिका क्या है? Java में String intern() मेथड की भूमिका क्या है?

    स्ट्रिंग Java में एक क्लास है जो कैरेक्टर्स के सीक्वेंस को स्टोर करती है, यह java.lang पैकेज से संबंधित है। एक बार स्ट्रिंग ऑब्जेक्ट बनाने के बाद आप उन्हें मॉडिफाई नहीं कर सकते (इम्यूटेबल)। स्टोरेज सभी स्ट्रिंग ऑब्जेक्ट्स हीप एरिया में एक अलग मेमोरी लोकेशन में स्टोर होते हैं जिसे स्ट्रिंग कॉन्स्टे

  1. Java में paint() विधि और repaint() विधि के बीच क्या अंतर हैं? Java में paint() विधि और repaint() विधि के बीच क्या अंतर हैं?

    Paint() और Repaint() paint(): इस विधि में इस घटक को पेंट करने के निर्देश होते हैं। Java Swing में, हम paint() विधि के बजाय paintComponent() विधि को बदल सकते हैं क्योंकि paint paintBorder(), paintComponent() और paintChildren() विधियों को कॉल करता है। हम इस विधि को सीधे नहीं बुला सकते, इसके बजाय हम

  1. - Java में मेथड ओवरराइडिंग के साथ Exception Handling

    हां, हम निम्नलिखित नियम का पालन करते हुए केवल अपवाद प्रबंधन को बदलकर Java में एक मेथड को ओवरराइड कर सकते हैं −एक ओवरराइडिंग मेथड किसी भी अनचेक्ड एक्सेप्शन को फेंक सकता है, चाहे ओवरराइडन मेथड एक्सेप्शन फेंकता हो या नहीं। हालांकि, ओवरराइडिंग मेथड को नए या व्यापक चेक्ड एक्सेप्शन नहीं फेंकने चाहिए जो ओव