আপনি জাভাতে আপনার নিজস্ব ব্যতিক্রমগুলি তৈরি করতে পারেন এবং সেগুলি ব্যবহারকারী-সংজ্ঞায়িত ব্যতিক্রম বা কাস্টম ব্যতিক্রম হিসাবে পরিচিত৷
একটি ব্যবহারকারী-সংজ্ঞায়িত ব্যতিক্রম তৈরি করতে উপরে উল্লিখিত ক্লাসগুলির একটি প্রসারিত করুন। বার্তাটি প্রদর্শন করতে 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)