যতই না সুপারক্লাসের মেথড নির্দিষ্ট এক্সেপশন থ্রো করুক, সাবক্লাস সেটি ওভাররাইড করার সময় কোনো এক্সেপশন থ্রো না করার বেছে নিতে পারে। এটি জাভাতে সম্পূর্ণ বৈধ এবং কম্পাইল টাইমে কোনো এরর দেয় না।
উদাহরণ
নিচের উদাহরণে সুপারক্লাসের sampleMethod() মেথডটি FileNotFoundException থ্রো করে, কিন্তু সাবক্লাসে ওভাররাইড করা মেথডটি কোনো এক্সেপশন থ্রো করে না।即便如此 প্রোগ্রামটি সফলভাবে কম্পাইল এবং রান হয়।
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
নিয়ম: ওভাররাইড করা মেথডটি সুপারক্লাসের মেথডের চেয়ে ন্যूनতম বা সমান এক্সেপশন থ্রো করতে পারে (নarrower checked exceptions), কিন্তু কখনোই বেশি বা ব্রোডার চেকড এক্সেপশন থ্রো করতে পারবে না। কোনো এক্সেপশন থ্রো না করা সবচেয়ে ন্যূনতমের পরিধিতে পড়ে।