আমাদের একটি সাক্ষাত্কার প্রশ্ন করা যাক। এমন একটি পদ্ধতি রয়েছে যা সুপারক্লাসে নলপয়েন্টারএক্সসেপশন ছুড়ে দেয়। রানটাইম এক্সসেপশনকে ছুঁড়ে এমন কোনও পদ্ধতি দিয়ে কী আমরা এটিকে ওভাররাইড করতে পারি?
এই প্রশ্নের উত্তর দিতে, আসুন জেনে নেওয়া যাক একটি চেক না করা এবং চেক করা ব্যতিক্রম কী।
বেসিক ট্রাই-ক্যাচ-অবশেষে এক্সেপশন হ্যান্ডলিং-এ বর্ণিত হিসাবে পরীক্ষিত ব্যতিক্রমগুলি অবশ্যই স্পষ্টভাবে ধরা বা প্রচার করতে হবে। চেক করা ব্যতিক্রমগুলির এই প্রয়োজনীয়তা নেই। তাদের ধরা বা ছুঁড়ে ফেলার ঘোষণা করতে হবে না।
জাভাতে চেক করা ব্যতিক্রম java.lang.Exception ক্লাসটি প্রসারিত করে। চেক করা ব্যতিক্রমগুলি জাভা.এল.আং.রুনটাইম এক্সসেপশনকে প্রসারিত করে।
পাবলিক ক্লাস নালপয়েন্টার এক্সসেপশন রানটাইম এক্সেপশন প্রসারিত করে
চেক করা ব্যতিক্রমগুলি জাভা.এল.আং.রুনটাইম এক্সসেপশনকে প্রসারিত করে। নালপয়েন্টার এক্সসেপশন কেন একটি চেনা ব্যতিক্রম Th
আসুন একটি উদাহরণ নেওয়া যাক: উদাহরণ 1:
public class Parent {
public void name() throws NullPointerException {
System.out.println(" this is parent");
}
}
public class Child extends Parent{
public void name() throws RuntimeException{
System.out.println(" child ");
}
public static void main(String[] args) {
Parent parent = new Child();
parent.name();// output => child
}
}
প্রোগ্রামটি সফলভাবে সংকলন করবে। উদাহরণ 2:
public class Parent {
public void name() throws RuntimeException {
System.out.println(" this is parent");
}
}
public class Child extends Parent{
public void name() throws NullPointerException {
System.out.println(" child ");
}
public static void main(String[] args) {
Parent parent = new Child();
parent.name();// output => child
}
}
প্রোগ্রামটি সফলভাবে সংকলন করবে। সুতরাং এটি স্পষ্ট যে চেক করা ব্যতিক্রম ক্ষেত্রে কিছুই হয় না nothing এখন, আসুন একবার দেখে নেওয়া যাক চেক করা ব্যতিক্রমগুলির ক্ষেত্রে কী ঘটে। উদাহরণ 3: যখন বেস ক্লাস এবং শিশু শ্রেণি উভয়ই একটি চেক করা ব্যতিক্রম ছুঁড়ে দেয়
public class Parent {
public void name() throws IOException {
System.out.println(" this is parent");
}
}
public class Child extends Parent{
public void name() throws IOException{
System.out.println(" child ");
}
public static void main(String[] args) {
Parent parent = new Child();
try {
parent.name();// output=> child
}catch( Exception e) {
System.out.println(e);
}
}
}
প্রোগ্রামটি সফলভাবে সংকলন করবে। উদাহরণ 4: যখন শিশু শ্রেণির পদ্ধতিটি বেস শ্রেণীর একই পদ্ধতির তুলনায় সীমান্ত পরীক্ষিত ব্যতিক্রম ছুঁড়ে ফেলে।
import java.io.IOException;
public class Parent {
public void name() throws IOException {
System.out.println(" this is parent");
}
}
public class Child extends Parent{
public void name() throws Exception{ // broader exception
System.out.println(" child ");
}
public static void main(String[] args) {
Parent parent = new Child();
try {
parent.name();//output=> Compilation failure
}catch( Exception e) {
System.out.println(e);
}
}
}
প্রোগ্রামটি সংকলন করতে ব্যর্থ হবে। সুতরাং, আমরা চেক করা ব্যতিক্রমগুলি ব্যবহার করার সময় আমাদের যত্নবান হতে হবে।