Java Exception Handling একটি শক্তিশালী ফিচার যা প্রোগ্রামের রuntime-errors বা অন্য কোন অনাকাঙ্ক্ষিত সমস্যা প্রতিরোধ করতে সহায়ক। try-catch ব্লক Java তে exception handling করার জন্য ব্যবহৃত হয়। এটি যখন কোনো কোড ব্লকে exception (ত্রুটি) ঘটে, তখন তা catch ব্লকে ধরা হয় এবং প্রোগ্রামটি ক্র্যাশ না হয়ে সঠিকভাবে চলতে থাকে।
try-catch ব্লক এর সাধারণ কাঠামো:
try {
// কোড যা exception ঘটাতে পারে
} catch (ExceptionType e) {
// exception ধরা হলে এটি execute হবে
}
Try-catch ব্লক উদাহরণ:
এখানে একটি সাধারণ উদাহরণ দেয়া হলো, যেখানে একটি ArithmeticException ধরা হয়েছে, যা 0 দ্বারা ভাগ করার সময় ঘটে।
Try-catch Example:
public class TryCatchExample {
public static void main(String[] args) {
int a = 10;
int b = 0;
try {
// কোড যা exception ঘটাতে পারে
int result = a / b; // 0 দ্বারা ভাগ করার চেষ্টা
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
// ArithmeticException ধরা হলে এই ব্লক execute হবে
System.out.println("Error: Cannot divide by zero.");
}
System.out.println("Program continues...");
}
}
Explanation:
tryব্লক: এখানে ১০কে ০ দ্বারা ভাগ করার চেষ্টা করা হয়েছে, যা একটিArithmeticExceptionসৃষ্টি করবে।catchব্লক:catch (ArithmeticException e)দিয়ে সেই exception ধরা হচ্ছে। এখানে exception ধরা হলে"Error: Cannot divide by zero."মেসেজটি প্রিন্ট হবে এবং প্রোগ্রামটি থামবে না, চালু থাকবে।- Program continues...:
catchব্লক থেকে exception সঠিকভাবে হ্যান্ডল করার পর প্রোগ্রামটি এটার পরবর্তী অংশে চলে যাবে।
Output:
Error: Cannot divide by zero.
Program continues...
Multiple catch Blocks Example:
একই try ব্লক থেকে একাধিক ভিন্ন ধরনের exception ধরার জন্য একাধিক catch ব্লক ব্যবহার করা যায়। এখানে আমরা একটি ArithmeticException এবং ArrayIndexOutOfBoundsException ধরার চেষ্টা করেছি।
Multiple catch Example:
public class MultipleCatchExample {
public static void main(String[] args) {
try {
// ArithmeticException
int a = 10;
int b = 0;
int result = a / b;
// ArrayIndexOutOfBoundsException
int[] numbers = new int[2];
numbers[5] = 10; // Trying to access index 5, which is out of bounds
} catch (ArithmeticException e) {
System.out.println("Error: Cannot divide by zero.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Error: Array index is out of bounds.");
} catch (Exception e) {
// General Exception
System.out.println("Error: An unexpected error occurred.");
}
System.out.println("Program continues...");
}
}
Explanation:
- Multiple Exceptions: এখানে দুটি
catchব্লক আছে—একটিArithmeticExceptionএবং একটিArrayIndexOutOfBoundsExceptionএর জন্য। - General catch: যদি অন্য কোন exception ঘটে, তবে এটি
Exceptionক্লাস দ্বারা ধরা হবে, কারণ এটি Java তে সব ধরনের exceptions এর বেস ক্লাস।
Output:
Error: Cannot divide by zero.
Program continues...
Finally Block Example:
finally ব্লক ব্যবহার করা হয় এমন কোডগুলোর জন্য যা অবশ্যই execute হবে, exception ঘটুক বা না ঘটুক। যেমন, resources বন্ধ করা (যেমন: ফাইল স্ট্রিম) বা শেষের পরিষ্কারক কাজ।
finally Block Example:
public class FinallyExample {
public static void main(String[] args) {
try {
System.out.println("In try block");
int result = 10 / 2;
System.out.println("Result: " + result);
} catch (ArithmeticException e) {
System.out.println("Error: Cannot divide by zero.");
} finally {
// This block will execute regardless of whether an exception occurs
System.out.println("Finally block executed");
}
System.out.println("Program continues...");
}
}
Explanation:
finallyblock: এটি তখনই execute হবে, যখনtryব্লক শেষ হয়, এবং কোনো exception ঘটুক বা না ঘটুক, এটি অবশ্যই চলবে।- Resources Cleanup: সাধারনত,
finallyব্লকটি রিসোর্স ক্লিনআপের জন্য ব্যবহৃত হয় যেমন ফাইল বা ডেটাবেস সংযোগ বন্ধ করা।
Output:
In try block
Result: 5
Finally block executed
Program continues...
Exception Propagation Example:
যখন একটি মেথড exception ফেলে এবং সেটি আরেকটি মেথডে পাঠানো হয়, তখন আমরা exception propagation এর কথা বলি।
Exception Propagation Example:
public class ExceptionPropagationExample {
public static void main(String[] args) {
try {
method1();
} catch (Exception e) {
System.out.println("Caught exception: " + e);
}
}
public static void method1() throws Exception {
method2();
}
public static void method2() throws Exception {
throw new Exception("An error occurred in method2");
}
}
Explanation:
throwskeyword:method1()এবংmethod2()তেthrows Exceptionব্যবহৃত হয়েছে, যা ইঙ্গিত দেয় যে এই মেথডগুলিতে exception ঘটতে পারে এবং সেগুলিmain()মেথডে প্রেরণ করা হবে।- Exception Propagation:
method2()তে exception ঘটলে, তাmethod1()এ পাঠানো হবে এবং পরেmain()মেথডে এটি catch করা হবে।
Output:
Caught exception: java.lang.Exception: An error occurred in method2
Java তে exception handling কোডে ত্রুটি বা সমস্যা ঘটলে প্রোগ্রামটি ক্র্যাশ না হয়ে সঠিকভাবে কাজ করতে সহায়তা করে। try-catch, finally এবং exception propagation এর মাধ্যমে আপনি আপনার প্রোগ্রামে ত্রুটির হ্যান্ডলিং সঠিকভাবে করতে পারবেন। এটি আপনাকে শক্তিশালী এবং রোবাস্ট অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।
Read more