Java তে এক্সেপশন হ্যান্ডলিং (Exception Handling) হলো একটি প্রক্রিয়া যার মাধ্যমে প্রোগ্রামের রানটাইম চলাকালীন কোনো সমস্যা বা ভুলের (Exception) সম্মুখীন হলে সেই সমস্যা সনাক্ত ও পরিচালনা করা যায়। এক্সেপশন হ্যান্ডলিং ব্যবহার করে প্রোগ্রামকে অপরিচিত ভুল বা সমস্যা থেকে রক্ষা করা যায় এবং প্রোগ্রাম ক্র্যাশ না করেই সঠিকভাবে কার্যকর করা যায়।
এক্সেপশন কী?
এক্সেপশন হলো একটি ইভেন্ট যা প্রোগ্রামের স্বাভাবিক কার্যক্রমকে বাধাগ্রস্ত করে। এটি রানটাইম চলাকালীন সংঘটিত হয় এবং যদি এক্সেপশন হ্যান্ডলিং করা না হয়, তাহলে প্রোগ্রামটি হঠাৎ বন্ধ হয়ে যেতে পারে।
এক্সেপশন এর ধরন
Java তে এক্সেপশনগুলো প্রধানত দুই ধরনের:
- Checked Exception: কম্পাইল টাইমে সনাক্ত করা যায়, যেমন
IOException,SQLException। - Unchecked Exception: রানটাইমে সনাক্ত করা হয়, যেমন
ArithmeticException,NullPointerException,ArrayIndexOutOfBoundsException।
এক্সেপশন হ্যান্ডলিং এর মূল স্টেটমেন্ট
Java তে এক্সেপশন হ্যান্ডলিং করার জন্য প্রধানত চারটি কীওয়ার্ড ব্যবহৃত হয়:
- try: এক্সেপশন সৃষ্টি হতে পারে এমন কোডের ব্লক
tryব্লকের মধ্যে রাখা হয়। - catch: এক্সেপশন ধরার জন্য
catchব্লক ব্যবহৃত হয়। এক্সেপশন ধরা পড়লেcatchব্লকের কোড কার্যকর হয়। - finally:
tryবাcatchব্লক সম্পন্ন হলেfinallyব্লক কার্যকর হয়। এটি এক্সেপশন থাকুক বা না থাকুক সবসময় কার্যকর হয়। - throw: ব্যবহারকারীর তৈরি এক্সেপশন নিক্ষেপ করতে
throwব্যবহার করা হয়।
এক্সেপশন হ্যান্ডলিং এর উদাহরণ
১. try-catch ব্লক
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = 10 / 0; // এখানে ArithmeticException তৈরি হবে
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Exception caught: Division by zero is not allowed.");
}
}
}
আউটপুট:
Exception caught: Division by zero is not allowed.
ব্যাখ্যা: এখানে 10 / 0 এর ফলে ArithmeticException তৈরি হয়, যা catch ব্লকে ধরা পড়ে এবং প্রোগ্রামটি ক্র্যাশ না করে প্রায়োজনীয় বার্তা প্রদর্শন করে।
২. try-catch-finally ব্লক
public class ExceptionExample {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // এখানে ArrayIndexOutOfBoundsException তৈরি হবে
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Exception caught: Array index is out of bounds.");
} finally {
System.out.println("This will always execute, regardless of exception.");
}
}
}
আউটপুট:
Exception caught: Array index is out of bounds.
This will always execute, regardless of exception.
ব্যাখ্যা: finally ব্লক সবসময় কার্যকর হয়, এটি প্রোগ্রাম সম্পন্ন করার জন্য ব্যবহার করা হয়, যেমন ফাইল ক্লোজ করা বা রিসোর্স রিলিজ করা।
৩. throw কীওয়ার্ড
throw কীওয়ার্ড ব্যবহার করে ম্যানুয়ালি এক্সেপশন তৈরি করা যায়।
public class ExceptionExample {
public static void main(String[] args) {
try {
validateAge(15); // ১৮ বছরের কম হওয়ায় এক্সেপশন তৈরি হবে
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void validateAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied: You must be at least 18 years old.");
} else {
System.out.println("Access granted.");
}
}
}
আউটপুট:
Access denied: You must be at least 18 years old.
ব্যাখ্যা: validateAge মেথডে throw কীওয়ার্ড ব্যবহার করে নিজস্ব ArithmeticException তৈরি করা হয়েছে, যা নির্দিষ্ট শর্ত অনুযায়ী কাজ করে।
৪. Multiple catch ব্লক
একাধিক এক্সেপশন ধরার জন্য একাধিক catch ব্লক ব্যবহার করা যেতে পারে।
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = 10 / 0;
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]);
} catch (ArithmeticException e) {
System.out.println("ArithmeticException caught: Division by zero.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("ArrayIndexOutOfBoundsException caught: Array index is out of bounds.");
}
}
}
আউটপুট:
ArithmeticException caught: Division by zero.
ব্যাখ্যা: এখানে প্রথমেই ArithmeticException তৈরি হয়, তাই প্রথম catch ব্লক কার্যকর হয়।
এক্সেপশন হ্যান্ডলিং এর সুবিধা
- প্রোগ্রাম ক্র্যাশ রোধ: এক্সেপশন হ্যান্ডলিং ব্যবহার করে প্রোগ্রামকে ক্র্যাশ হওয়া থেকে রক্ষা করা যায়।
- সমস্যা সনাক্ত করা সহজ: এক্সেপশন হ্যান্ডলিং সমস্যা সনাক্ত করতে সাহায্য করে এবং ডিবাগিং সহজ করে।
- কোড রক্ষণাবেক্ষণ সহজ: এক্সেপশন হ্যান্ডলিং ব্যবহার করে কোড রক্ষণাবেক্ষণ আরও সহজ হয়।
- রিসোর্স রিলিজ:
finallyব্লক ব্যবহার করে প্রোগ্রাম শেষে রিসোর্স রিলিজ করা যায়, যেমন ফাইল ক্লোজ করা।
সারসংক্ষেপ
Java তে এক্সেপশন হ্যান্ডলিং প্রোগ্রামের মধ্যে থাকা ভুল বা সমস্যা পরিচালনা করতে ব্যবহৃত হয়। এটি প্রোগ্রামকে চলাকালীন সমস্যা থেকে রক্ষা করে এবং প্রোগ্রামের নিরবচ্ছিন্ন কার্যকারিতা নিশ্চিত করে। try, catch, finally, এবং throw এর মাধ্যমে এক্সেপশন হ্যান্ডলিং করা যায়, যা প্রোগ্রামকে আরও নির্ভরযোগ্য এবং রক্ষণাবেক্ষণযোগ্য করে।
এক্সেপশন (Exception) হলো একটি বিশেষ ধরণের ত্রুটি যা প্রোগ্রাম চালানোর সময় ঘটে এবং প্রোগ্রামের স্বাভাবিক কার্যপ্রণালীকে বাধাগ্রস্ত করে। Java-তে এক্সেপশন হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের এমন একটি উপাদান, যা কোনো সমস্যা বা ত্রুটি ঘটলে ব্যবহারকারীকে সতর্ক করে এবং এর যথাযথ সমাধান করার সুযোগ দেয়। এক্সেপশন হ্যান্ডলিংয়ের মাধ্যমে প্রোগ্রামকে আরও স্থিতিশীল ও ব্যবহারকারীর জন্য বন্ধুত্বপূর্ণ করে তোলা যায়।
এক্সেপশন কেন প্রয়োজন?
- প্রোগ্রামের স্থায়িত্ব নিশ্চিত করতে: এক্সেপশন হ্যান্ডলিং ব্যবহার করে প্রোগ্রামের অপ্রত্যাশিত ত্রুটি থেকে রক্ষা পাওয়া যায় এবং প্রোগ্রামকে ক্র্যাশ হওয়া থেকে বাঁচানো যায়।
- ত্রুটি সমাধান করা সহজ করতে: এক্সেপশন হ্যান্ডলিং ত্রুটির ধরন ও অবস্থান চিহ্নিত করতে সহায়ক, ফলে ডিবাগিং এবং ত্রুটি সমাধান সহজ হয়।
- ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে: এক্সেপশন হ্যান্ডলিং ব্যবহার করে ত্রুটির সময় ব্যবহারকারীকে নির্দিষ্ট বার্তা দেখানো যায়, যা ব্যবহারের অভিজ্ঞতা উন্নত করে।
- জটিল লজিক সামাল দিতে: অনেক সময় কিছু কোড এমন থাকে যেখানে ত্রুটির সম্ভাবনা থাকে। এক্সেপশন হ্যান্ডলিংয়ের মাধ্যমে সেই কোডগুলোকে বিশেষভাবে পরিচালনা করা যায়।
Java-তে এক্সেপশন শ্রেণিবিভাগ
Java-তে প্রধানত তিন ধরনের এক্সেপশন রয়েছে:
চেকড এক্সেপশন (Checked Exception): কম্পাইল টাইমে ধরা পড়ে এবং প্রোগ্রাম চালানোর আগে ত্রুটি সংশোধন করতে বলা হয়। উদাহরণ: IOException, SQLException ইত্যাদি।
আনচেকড এক্সেপশন (Unchecked Exception): রানটাইমে ঘটে এবং এটি কম্পাইল টাইমে ধরা পড়ে না। উদাহরণ: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException ইত্যাদি।
এরর (Error): সাধারণত এটি জাভা ভার্চুয়াল মেশিন (JVM) দ্বারা সৃষ্ট ত্রুটি যা প্রোগ্রাম থেকে নিয়ন্ত্রণ করা সম্ভব নয়, যেমন মেমোরি সমস্যা। উদাহরণ: OutOfMemoryError, StackOverflowError ইত্যাদি।
সাধারণ এক্সেপশন উদাহরণ
উদাহরণ ১: ArithmeticException
public class Main {
public static void main(String[] args) {
int a = 10;
int b = 0;
// Division by zero - ArithmeticException
int result = a / b;
System.out.println("Result: " + result);
}
}
এখানে b এর মান ০ থাকায় a / b করলে ArithmeticException ঘটবে, কারণ শূন্য দিয়ে কোনো সংখ্যা ভাগ করা যায় না।
উদাহরণ ২: ArrayIndexOutOfBoundsException
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
// Array index out of bounds - ArrayIndexOutOfBoundsException
System.out.println(numbers[5]);
}
}
এখানে numbers অ্যারের ইনডেক্স ৩টি, কিন্তু numbers[5] কল করা হয়েছে, ফলে ArrayIndexOutOfBoundsException ঘটবে।
এক্সেপশন হ্যান্ডলিং কিভাবে করা হয়?
Java-তে try-catch ব্লক ব্যবহার করে এক্সেপশন হ্যান্ডলিং করা হয়।
গঠন
try {
// সম্ভাব্য ত্রুটিপূর্ণ কোড
} catch (ExceptionType e) {
// এক্সেপশন হ্যান্ডলিং কোড
}
উদাহরণ:
public class Main {
public static void main(String[] args) {
try {
int a = 10;
int b = 0;
int result = a / b;
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Cannot divide by zero!");
}
}
}
আউটপুট:
Cannot divide by zero!
ব্যাখ্যা:
tryব্লকে এমন একটি কোড রাখা হয়েছে যেখানেArithmeticExceptionঘটতে পারে।catchব্লকArithmeticExceptionধরার জন্য প্রস্তুত এবং ত্রুটি ঘটলে নির্দিষ্ট বার্তা প্রদর্শন করে।
আরও কিছু এক্সেপশন হ্যান্ডলিং কৌশল
finally ব্লক: finally ব্লক ব্যবহার করে এমন কিছু কোড রাখা হয় যা এক্সেপশন ঘটুক বা না ঘটুক, সবসময় চালানো হয়। উদাহরণ:
try {
int a = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Exception caught.");
} finally {
System.out.println("Finally block executed.");
}
throws কীওয়ার্ড: যখন কোনো মেথডে এক্সেপশন ঘটতে পারে বলে মনে হয়, তখন throws কীওয়ার্ড ব্যবহার করে এক্সেপশন ঘোষণা করা যায়, যা কলিং মেথডে হ্যান্ডল করা হয়। উদাহরণ:
public void readFile() throws IOException {
// ফাইল পড়ার কোড, যা IOException তৈরি করতে পারে
}
throw কীওয়ার্ড: ইচ্ছাকৃতভাবে এক্সেপশন তৈরি করতে throw কীওয়ার্ড ব্যবহার করা হয়।
public void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Age must be 18 or above.");
}
}
এক্সেপশন হ্যান্ডলিংয়ের সুবিধা
- প্রোগ্রামের স্থিতিশীলতা বৃদ্ধি: এক্সেপশন হ্যান্ডলিং ব্যবহার করে প্রোগ্রামকে ত্রুটি থেকে রক্ষা করা যায় এবং ক্র্যাশ হওয়া এড়ানো যায়।
- ত্রুটি চিহ্নিত করা সহজ: ত্রুটির কারণ খুঁজে বের করতে এবং ত্রুটি সংশোধন সহজ হয়।
- ব্যবহারকারীর জন্য বন্ধুত্বপূর্ণ: ব্যবহারকারীকে ত্রুটির সময় সঠিক বার্তা দেখিয়ে তার অভিজ্ঞতা উন্নত করা যায়।
- কোড মডুলার রাখা: এক্সেপশন হ্যান্ডলিংয়ের মাধ্যমে কোডকে ভালোভাবে গঠন করে রাখা যায়।
সারসংক্ষেপ
- এক্সেপশন হলো প্রোগ্রামের অপ্রত্যাশিত ত্রুটি যা স্বাভাবিক কার্যপ্রণালী ব্যাহত করে।
- try-catch-finally ব্লকের মাধ্যমে Java-তে এক্সেপশন হ্যান্ডলিং করা হয়।
- এক্সেপশন হ্যান্ডলিং প্রোগ্রামের স্থিতিশীলতা বৃদ্ধি, ত্রুটি নির্ধারণ সহজতর করা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সহায়ক।
এক্সেপশন হ্যান্ডলিং ব্যবহার করে প্রোগ্রামকে আরও স্থিতিশীল, মডুলার, এবং ব্যবহারকারীর জন্য আরও সহজবোধ্য করা যায়।
Java তে try, catch, এবং finally ব্লক এক্সেপশন হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। এই ব্লকগুলো প্রোগ্রাম চলাকালীন বিভিন্ন ধরনের এক্সেপশন সনাক্ত, হ্যান্ডল, এবং অবশেষে ক্লিনআপ (cleanup) কার্য সম্পাদন করতে সাহায্য করে।
try, catch, এবং finally ব্লকের কার্যপদ্ধতি
১. try ব্লক
try ব্লকের ভেতর এমন কোড রাখা হয় যেখানে এক্সেপশন (exception) ঘটতে পারে। যদি try ব্লকের কোডে কোনো এক্সেপশন ঘটে, তাহলে সেটি catch ব্লকে পাঠানো হয়।
গঠন:
try {
// এক্সেপশন ঘটার সম্ভাবনাময় কোড
}
২. catch ব্লক
catch ব্লক try ব্লকে ঘটে যাওয়া এক্সেপশন হ্যান্ডল করতে ব্যবহৃত হয়। এক্সেপশনের ধরন অনুযায়ী সঠিক catch ব্লক কার্যকর হয়। একাধিক catch ব্লক ব্যবহার করে বিভিন্ন ধরনের এক্সেপশন আলাদা করে হ্যান্ডল করা যায়।
গঠন:
catch (ExceptionType e) {
// এক্সেপশন হ্যান্ডলিং কোড
}
৩. finally ব্লক
finally ব্লক সবসময় কার্যকর হয়, চাই এক্সেপশন ঘটুক বা না ঘটুক। এটি সাধারণত রিসোর্স ক্লিনআপ, যেমন ফাইল বন্ধ করা বা ডেটাবেস সংযোগ বন্ধ করার জন্য ব্যবহৃত হয়।
গঠন:
finally {
// সবসময় কার্যকর হওয়া কোড
}
উদাহরণ: try, catch, এবং finally ব্লক
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = 10 / 0; // এখানে ArithmeticException তৈরি হবে
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Exception caught: Division by zero is not allowed.");
} finally {
System.out.println("This will always execute, regardless of exception.");
}
}
}
আউটপুট:
Exception caught: Division by zero is not allowed.
This will always execute, regardless of exception.
ব্যাখ্যা:
- এখানে
10 / 0এর ফলেArithmeticExceptionতৈরি হয়, যাcatchব্লকে ধরা পড়ে এবং একটি বার্তা প্রদর্শন করে। finallyব্লক সবসময় কার্যকর হয়, তাই এক্সেপশন থাকলেও সেটি কার্যকর হয় এবং নির্দিষ্ট বার্তা প্রদর্শন করে।
একাধিক catch ব্লক ব্যবহার
একই try ব্লকে একাধিক ধরনের এক্সেপশন হ্যান্ডল করতে একাধিক catch ব্লক ব্যবহার করা যেতে পারে। প্রতিটি catch ব্লক ভিন্ন ধরনের এক্সেপশন হ্যান্ডল করতে পারে।
public class MultipleCatchExample {
public static void main(String[] args) {
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // এখানে ArrayIndexOutOfBoundsException ঘটবে
int result = 10 / 0; // এখানে ArithmeticException ঘটবে
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Exception caught: Array index is out of bounds.");
} catch (ArithmeticException e) {
System.out.println("Exception caught: Division by zero is not allowed.");
} finally {
System.out.println("This will always execute, regardless of exception.");
}
}
}
আউটপুট:
Exception caught: Array index is out of bounds.
This will always execute, regardless of exception.
ব্যাখ্যা: প্রথমেই ArrayIndexOutOfBoundsException ঘটে এবং সেই catch ব্লকটি কার্যকর হয়। এরপর finally ব্লক সর্বদা কার্যকর হয়, চাই এক্সেপশন ঘটুক বা না ঘটুক।
শুধুমাত্র finally ব্লক ব্যবহার
try এবং finally ব্লক একসাথে ব্যবহার করা যায়, catch ব্লক ছাড়াও। এটি তখনই ব্যবহার করা হয় যখন আমরা নিশ্চিত যে এক্সেপশন হ্যান্ডলিং প্রয়োজন নেই, তবে প্রোগ্রামের শেষে কিছু ক্লিনআপ কোড চালানো প্রয়োজন।
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("Inside try block.");
} finally {
System.out.println("Finally block executed.");
}
}
}
আউটপুট:
Inside try block.
Finally block executed.
try-catch-finally এর সুবিধা
- প্রোগ্রামকে ক্র্যাশ থেকে রক্ষা: এক্সেপশন থাকলেও প্রোগ্রাম চলমান থাকে।
- সমস্যা সনাক্ত ও সমাধান:
catchব্লক সমস্যার ধরন নির্ধারণ করে এবং উপযুক্ত বার্তা প্রদর্শন করে। - রিসোর্স ক্লিনআপ:
finallyব্লক ব্যবহার করে ফাইল বা ডেটাবেস সংযোগের মতো রিসোর্স নিরাপদে বন্ধ করা যায়।
সারসংক্ষেপ
Java তে try, catch, এবং finally ব্লক ব্যবহার করে এক্সেপশন হ্যান্ডল করা হয়। try ব্লকে এক্সেপশন ঘটতে পারে এমন কোড থাকে, catch ব্লক এক্সেপশন হ্যান্ডল করে, এবং finally ব্লক সবসময় কার্যকর হয়, যাতে প্রোগ্রাম শেষ করার আগে প্রয়োজনীয় ক্লিনআপ নিশ্চিত করা যায়। এটি প্রোগ্রামকে আরও নির্ভরযোগ্য ও রক্ষণাবেক্ষণযোগ্য করে।
কাস্টম এক্সেপশন (Custom Exception) হলো প্রোগ্রামারের তৈরি একটি বিশেষ এক্সেপশন ক্লাস, যা নির্দিষ্ট ত্রুটির জন্য প্রোগ্রামার নিজের মতো করে সংজ্ঞায়িত করে। Java তে কাস্টম এক্সেপশন তৈরি করতে Exception ক্লাসকে ইনহেরিট করে নতুন এক্সেপশন ক্লাস তৈরি করা হয়। কাস্টম এক্সেপশন ব্যবহার করে আমরা প্রোগ্রামের প্রয়োজন অনুযায়ী ত্রুটির ধরন চিহ্নিত করতে পারি এবং এর জন্য উপযুক্ত বার্তা প্রদর্শন করতে পারি।
কেন কাস্টম এক্সেপশন ব্যবহার করা হয়?
- নির্দিষ্ট ত্রুটি চিহ্নিত করা: যখন নির্দিষ্ট কোনো কাজের জন্য ত্রুটি চিহ্নিত করতে হয় এবং সেই ত্রুটির জন্য সুনির্দিষ্ট বার্তা প্রদান করতে হয়।
- পড়ার সুবিধা: কাস্টম এক্সেপশন তৈরি করলে কোড আরও সহজে পড়া এবং বুঝতে সুবিধা হয়।
- প্রোগ্রামের স্থায়িত্ব: নির্দিষ্ট ধরনের ত্রুটি ধরে রেখে সঠিকভাবে হ্যান্ডল করে প্রোগ্রামের স্থায়িত্ব বাড়ানো যায়।
কাস্টম এক্সেপশন তৈরি
Java তে কাস্টম এক্সেপশন তৈরি করতে একটি ক্লাস তৈরি করা হয়, যা Exception ক্লাসকে ইনহেরিট করে। এরপরে কনস্ট্রাক্টর তৈরি করে ত্রুটির জন্য উপযুক্ত বার্তা প্রেরণ করা যায়।
উদাহরণ: কাস্টম এক্সেপশন
// Custom Exception ক্লাস তৈরি
class InvalidAgeException extends Exception {
// কনস্ট্রাক্টর যা ত্রুটির বার্তা গ্রহণ করে
public InvalidAgeException(String message) {
super(message); // প্যারেন্ট Exception ক্লাসের কনস্ট্রাক্টরে বার্তা প্রেরণ
}
}
public class TestCustomException {
// মেথড যা কাস্টম এক্সেপশন থ্রো করতে পারে
public static void checkAge(int age) throws InvalidAgeException {
if (age < 18) {
throw new InvalidAgeException("Age must be 18 or above to register.");
} else {
System.out.println("Registration successful.");
}
}
public static void main(String[] args) {
try {
checkAge(15); // এই ক্ষেত্রে কাস্টম এক্সেপশন থ্রো হবে
} catch (InvalidAgeException e) {
System.out.println("Caught Exception: " + e.getMessage());
}
}
}
আউটপুট:
Caught Exception: Age must be 18 or above to register.
ব্যাখ্যা:
InvalidAgeExceptionনামের কাস্টম এক্সেপশন ক্লাস তৈরি করা হয়েছে, যাExceptionক্লাসকে ইনহেরিট করে।InvalidAgeExceptionক্লাসে কনস্ট্রাক্টর তৈরি করে কাস্টম বার্তা গ্রহণ করা হয়েছে।checkAgeমেথডে বয়স যাচাই করা হয় এবং বয়স ১৮ এর কম হলেInvalidAgeExceptionথ্রো করা হয়।mainমেথডেcheckAgeমেথড কল করেtry-catchব্লক ব্যবহার করে এক্সেপশনটি ধরা হয়েছে।
কাস্টম এক্সেপশনের বিভিন্ন ব্যবহার
- ব্যবহারকারী ইনপুট যাচাই: যেমন বয়স, ইমেইল ঠিকানা, পাসওয়ার্ডের দৈর্ঘ্য ইত্যাদি যাচাই করে নির্দিষ্ট কাস্টম এক্সেপশন থ্রো করা।
- ডাটাবেজ অপারেশন: ডাটাবেজে প্রবেশে কোনো সমস্যা হলে
DatabaseConnectionException,RecordNotFoundExceptionএর মতো কাস্টম এক্সেপশন তৈরি করা। - বিজনেস লজিক ভ্যালিডেশন: বিভিন্ন ব্যবসায়িক নিয়ম অনুযায়ী কাস্টম এক্সেপশন তৈরি করে লজিক যাচাই করা।
আরেকটি উদাহরণ: কাস্টম এক্সেপশন (ব্যাংকিং অ্যাপ্লিকেশন)
ধরুন, আমাদের একটি ব্যাংকিং অ্যাপ্লিকেশন আছে যেখানে ব্যালেন্স চেক করা হয় এবং তহবিল পর্যাপ্ত না থাকলে InsufficientFundsException নামে একটি কাস্টম এক্সেপশন তৈরি করা হয়েছে।
// Custom Exception ক্লাস
class InsufficientFundsException extends Exception {
public InsufficientFundsException(String message) {
super(message);
}
}
class BankAccount {
private double balance;
public BankAccount(double balance) {
this.balance = balance;
}
// Withdraw মেথড, যা কাস্টম এক্সেপশন থ্রো করতে পারে
public void withdraw(double amount) throws InsufficientFundsException {
if (amount > balance) {
throw new InsufficientFundsException("Insufficient funds for withdrawal.");
}
balance -= amount;
System.out.println("Withdrawal successful. Remaining balance: " + balance);
}
}
public class Main {
public static void main(String[] args) {
BankAccount account = new BankAccount(500.0);
try {
account.withdraw(600.0); // ব্যালেন্সের চেয়ে বেশি তোলার চেষ্টা করা হয়েছে
} catch (InsufficientFundsException e) {
System.out.println("Caught Exception: " + e.getMessage());
}
}
}
আউটপুট:
Caught Exception: Insufficient funds for withdrawal.
ব্যাখ্যা:
InsufficientFundsExceptionনামে কাস্টম এক্সেপশন তৈরি করা হয়েছে।BankAccountক্লাসেwithdrawমেথডে যদি ব্যালেন্সের চেয়ে বেশি তোলার চেষ্টা করা হয়, তবেInsufficientFundsExceptionথ্রো করা হয়।mainমেথডেtry-catchব্লক ব্যবহার করে এক্সেপশনটি ধরা হয়েছে।
কাস্টম এক্সেপশনের সুবিধা
- নির্দিষ্ট ত্রুটি চিহ্নিত করা সহজ: কাস্টম এক্সেপশন দিয়ে ত্রুটির ধরন সহজে বোঝা যায়।
- কোডের পাঠযোগ্যতা বৃদ্ধি: নির্দিষ্ট ত্রুটির জন্য আলাদা এক্সেপশন তৈরি করলে কোড আরও সহজে পড়া যায়।
- প্রোগ্রামের স্থিতিশীলতা বৃদ্ধি: কাস্টম এক্সেপশন ব্যবহারের মাধ্যমে প্রোগ্রামকে ত্রুটির সময় নিয়ন্ত্রিত করা যায় এবং ব্যবহারকারীর জন্য নির্দিষ্ট বার্তা দেখানো যায়।
সারসংক্ষেপ
- কাস্টম এক্সেপশন হলো প্রোগ্রামারের সংজ্ঞায়িত এক্সেপশন, যা নির্দিষ্ট কাজের জন্য বিশেষ ত্রুটি চিহ্নিত করে।
- কাস্টম এক্সেপশন তৈরি করতে
Exceptionক্লাস ইনহেরিট করে নতুন এক্সেপশন ক্লাস তৈরি করা হয়। - কাস্টম এক্সেপশন কোডকে আরও স্পষ্ট, নির্ভরযোগ্য এবং ব্যবহারকারীর জন্য বন্ধুত্বপূর্ণ করে তোলে।
কাস্টম এক্সেপশন ব্যবহার করে প্রোগ্রামের ত্রুটি চিহ্নিত করা এবং সঠিকভাবে সমাধান করা সহজ হয়, যা প্রোগ্রামকে আরও স্থিতিশীল করে।
Read more