Checked Exception এবং Unchecked Exception জাভা তে দুটি প্রধান ধরনের Exception। এগুলি exception handling এর জন্য ব্যবহৃত হয়, তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। নিচে আমরা Checked Exception এবং Unchecked Exception এর মধ্যে পার্থক্য এবং এর বিস্তারিত ব্যাখ্যা দিচ্ছি।
1. Checked Exception:
Checked Exception হলো এমন ধরনের exception যা compile-time এ চেক করা হয়। অর্থাৎ, যখন আপনি একটি checked exception throw করতে চান, তখন try-catch ব্লক ব্যবহার করতে হবে অথবা throws ক্লজ দিয়ে method signature-এ উল্লেখ করতে হবে। যদি আপনি এই exceptions ধরতে না পারেন, তাহলে কম্পাইলার আপনাকে এটি নিয়ে সতর্ক করবে এবং ভুল থাকতে পারে বলে একে handle করার নির্দেশ দেবে।
উদাহরণ:
Checked Exception হলো IOException, SQLException, ClassNotFoundException ইত্যাদি।
import java.io.*;
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
// Checked exception: IOException
FileReader file = new FileReader("non_existing_file.txt");
} catch (IOException e) {
System.out.println("IOException occurred: " + e.getMessage());
}
}
}
Output:
IOException occurred: non_existing_file.txt (The system cannot find the file specified)
2. Unchecked Exception:
Unchecked Exception হলো এমন ধরনের exception যা runtime এ ঘটে এবং compile-time এ চেক করা হয় না। এই ধরনের exception গুলি সাধারণত RuntimeException ক্লাসের সাবক্লাস হিসেবে থাকে। যদি কোনো unchecked exception ঘটে, তাহলে কম্পাইলার আপনাকে এর জন্য try-catch বা throws ব্যবহার করতে বাধ্য করে না। এর কারণ হল, এগুলি সাধারণত প্রোগ্রামের লজিক্যাল ভুলের কারণে ঘটে এবং প্রোগ্রামারই সেগুলি পূর্বাভাস করতে পারে।
উদাহরণ:
Unchecked Exception হলো ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, IllegalArgumentException ইত্যাদি।
public class UncheckedExceptionExample {
public static void main(String[] args) {
try {
// Unchecked exception: ArithmeticException
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("ArithmeticException occurred: " + e.getMessage());
}
}
}
Output:
ArithmeticException occurred: / by zero
Checked এবং Unchecked Exception এর মধ্যে পার্থক্য:
| বিষয় | Checked Exception | Unchecked Exception |
|---|---|---|
| Definition | এটি এমন একটি exception যা কম্পাইল টাইমে চেক করা হয়। | এটি এমন একটি exception যা রানটাইমে ঘটে এবং কম্পাইল টাইমে চেক করা হয় না। |
| Inheritance | Exception ক্লাসের সাবক্লাস। | RuntimeException ক্লাসের সাবক্লাস। |
| Handling | try-catch ব্লক ব্যবহার অথবা throws ক্লজ দিয়ে হ্যান্ডল করতে হবে। | এটি optional; তবে সম্ভব হলে try-catch ব্যবহার করা হয়। |
| Examples | IOException, SQLException, ClassNotFoundException | NullPointerException, ArithmeticException, ArrayIndexOutOfBoundsException |
| When to handle? | কম্পাইলারের মাধ্যমে এর জন্য আপনাকে হ্যান্ডল করতে হবে। | শুধুমাত্র প্রোগ্রামার যদি প্রয়োজন মনে করেন, তখনই এটি হ্যান্ডল করা হয়। |
| Occurence | সাধারণত ফাইল সিস্টেম, ডাটাবেস, ইত্যাদির মতো বাহ্যিক ব্যবস্থার কারণে ঘটে। | প্রোগ্রামের লজিক্যাল ত্রুটির কারণে ঘটে। |
3. কোন Exception কখন ব্যবহার করবেন?
- Checked Exception: যখন আপনি জানেন যে কিছু এমন ঘটতে পারে যা আপনি পূর্বাভাস করতে পারেন এবং এটি ব্যবহারকারীর জন্য একটি নিয়মিত সমস্যা হতে পারে, তখন checked exception ব্যবহার করুন। যেমন, ফাইল না পাওয়া, ডাটাবেস সংযোগের সমস্যা ইত্যাদি।
- Unchecked Exception: যখন আপনার কোডে কোন লজিক্যাল ত্রুটি থাকে বা আপনি এমন কোন পরিস্থিতির মধ্যে আছেন যেখানে তা runtime-এ খুবই সম্ভব এবং তা আগেই ধরা যায়, তখন unchecked exception ব্যবহার করা উচিত। যেমন, শূন্য দ্বারা ভাগ করা, null অবজেক্ট রেফারেন্স ব্যবহার করা, ইত্যাদি।
- Checked Exceptions: কম্পাইল টাইমে চেক করা হয়, এবং এগুলিকে হ্যান্ডল করতে try-catch বা throws ক্লজ ব্যবহার করা হয়।
- Unchecked Exceptions: রানটাইমে ঘটে, এবং এগুলিকে হ্যান্ডল করার জন্য বাধ্যতামূলক নয়, তবে এগুলি প্রোগ্রামার দ্বারা সঠিকভাবে পরিচালিত হতে পারে।
Read more