আপনি জাভাতে আপনার নিজস্ব ব্যতিক্রমগুলি তৈরি করতে পারেন এবং সেগুলি ব্যবহারকারী-সংজ্ঞায়িত ব্যতিক্রম বা কাস্টম ব্যতিক্রম হিসাবে পরিচিত৷
একটি ব্যবহারকারী-সংজ্ঞায়িত ব্যতিক্রম তৈরি করতে উপরে উল্লিখিত ক্লাসগুলির একটি প্রসারিত করুন। বার্তাটি প্রদর্শন করতে toString() ওভাররাইড করুন পদ্ধতি বা, স্ট্রিং ফর্ম্যাটে বার্তা বাইপাস করে সুপারক্লাস প্যারামিটারাইজড কনস্ট্রাক্টরকে কল করুন।
MyException(String msg){ super(msg); } Or, public String toString(){ return " MyException [Message of your exception]"; }
তারপরে, অন্যান্য ক্লাসে যেখানেই এই ব্যতিক্রমটি উত্থাপনের প্রয়োজন হয়, তৈরি করা কাস্টম ব্যতিক্রম ক্লাসের একটি অবজেক্ট তৈরি করুন এবং থ্রো কীওয়ার্ড ব্যবহার করে ব্যতিক্রমটি ছুঁড়ে দিন।
MyException ex = new MyException (); If(condition……….){ throw ex; }
কাস্টম চেক করা এবং কাস্টম আনচেক করা হয়েছে
-
সমস্ত ব্যতিক্রম অবশ্যই নিক্ষেপযোগ্য শিশু হতে হবে৷
৷ -
আপনি যদি একটি চেক করা ব্যতিক্রম লিখতে চান যা স্বয়ংক্রিয়ভাবে হ্যান্ডেল বা ঘোষণা বিধি দ্বারা প্রয়োগ করা হয়, তাহলে আপনাকে ব্যতিক্রম প্রসারিত করতে হবে ক্লাস।
-
আপনি যদি রানটাইম ব্যতিক্রম লিখতে চান তবে আপনাকে RuntimeException প্রসারিত করতে হবে ক্লাস।
উদাহরণ:কাস্টম চেক করা ব্যতিক্রম
নিম্নলিখিত জাভা প্রোগ্রামটি দেখায় কিভাবে একটি কাস্টম চেক করা ব্যতিক্রম তৈরি করতে হয়।
import java.util.Scanner; class NotProperNameException extends Exception { NotProperNameException(String msg){ super(msg); } } public class CustomCheckedException { private String name; private int age; public static boolean containsAlphabet(String name) { for (int i = 0; i < name.length(); i++) { char ch = name.charAt(i); if (!(ch >= 'a' && ch <= 'z')) { return false; } } return true; } public CustomCheckedException(String name, int age){ if(!containsAlphabet(name)&&name!=null) { String msg = "Improper name (Should contain only characters between a to z (all small))"; NotProperNameException exName = new NotProperNameException(msg); throw exName; } this.name = name; this.age = age; } public void display(){ System.out.println("Name of the Student: "+this.name ); System.out.println("Age of the Student: "+this.age ); } public static void main(String args[]) { Scanner sc= new Scanner(System.in); System.out.println("Enter the name of the person: "); String name = sc.next(); System.out.println("Enter the age of the person: "); int age = sc.nextInt(); CustomCheckedException obj = new CustomCheckedException(name, age); obj.display(); } }
কম্পাইল-টাইম ব্যতিক্রম
কম্পাইল করার সময়, উপরের প্রোগ্রামটি নিম্নলিখিত ব্যতিক্রম তৈরি করে।
CustomCheckedException.java:24: error: unreported exception NotProperNameException; must be caught or declared to be thrown throw exName; ^ 1 error
উদাহরণ:কাস্টম আনচেক করা ব্যতিক্রম
আপনি যদি আপনার কাস্টম ব্যতিক্রম RuntimeException-এ উত্তরাধিকারসূত্রে পাওয়া ক্লাসটি পরিবর্তন করেন এটি চালানোর সময় নিক্ষেপ করা হবে
class NotProperNameException extends RuntimeException { NotProperNameException(String msg){ super(msg); } }
আপনি যদি পূর্ববর্তী প্রোগ্রামটি NotProperNameException ক্লাসটি উপরের কোডের টুকরো দিয়ে প্রতিস্থাপন করে চালান এবং এটি চালান তবে এটি নিম্নলিখিত রানটাইম ব্যতিক্রম তৈরি করে৷
রানটাইম ব্যতিক্রম
Enter the name of the person: Krishna1234 Enter the age of the person: 20 Exception in thread "main" july_set3.NotProperNameException: Improper name (Should contain only characters between a to z (all small)) at july_set3.CustomCheckedException.<init>(CustomCheckedException.java:25) at july_set3.CustomCheckedException.main(CustomCheckedException.java:41)