Exception এবং Error উভয় Throwable ক্লাসের সাবক্লাস। Error সিস্টেম রিসোর্সের অভাবের কারণে হয় এমন সমস্যা নির্দেশ করে যা অ্যাপ্লিকেশন ক্যাচ করা উচিত নয়। উদাহরণ: সিস্টেম ক্র্যাশ, OutOfMemoryError। Error অধিকাংশসময় রানটাইমে হয় তাই unchecked টাইপের।
Exception হল ডেভেলপার লেখা কোডে হতে পারে এমন সমস্যা, যা রানটাইম এবং কম্পাইল টাইম দুজনেই হতে পারে। Exception দুটি ক্যাটাগরিতে ভাগ: checked এবং unchecked exception।
Exception এবং Error-এর তুলনা
| ক্রমিক নং | বিষয় | Error | Exception |
|---|---|---|---|
| ১ | টাইপ | Unchecked টাইপ হিসেবে শ্রেণিবদ্ধ | Checked এবং unchecked দুটোই হয় |
| ২ | প্যাকেজ | java.lang.Error | java.lang.Exception |
| ৩ | রিকভারেবিলিটি | Irrecoverable (পুনরুদ্ধার অসম্ভব) | Recoverable (পুনরুদ্ধার সম্ভব) |
| ৪ | ঘটনার সময় | কম্পাইল টাইমে ঘটে না | রানটাইম এবং কম্পাইল টাইম দুজনেই হতে পারে |
| ৫ | উদাহরণ | OutOfMemoryError, IOError | NullPointerException, SQLException |
Error উদাহরণ
public class ErrorExample {
public static void main(String[] args) {
recursiveMethod(10);
}
public static void recursiveMethod(int i) {
while(i != 0) {
i = i + 1;
recursiveMethod(i); // StackOverflowError হবে
}
}
}
আউটপুট
Exception in thread "main" java.lang.StackOverflowError
at ErrorExample.recursiveMethod(Main.java:42)
Exception উদাহরণ
public class ExceptionExample {
public static void main(String[] args) {
int x = 100;
int y = 0;
int z = x / y; // ArithmeticException হবে
}
}
আউটপুট
java.lang.ArithmeticException: / by zero
at ExceptionExample.main(ExceptionExample.java:7)
মূল নোট
- Error: সিস্টেম-লেভেল সমস্যা, অ্যাপ্লিকেশন হ্যান্ডেল করা উচিত নয়
- Exception: অ্যাপ্লিকেশন-লেভেল সমস্যা, হ্যান্ডেল করা উচিত
- Checked exception: কম্পাইলার বাধ্য করে হ্যান্ডেল করার জন্য (IOException, SQLException)
- Unchecked exception: রানটাইম এক্সেপশন (NullPointerException, ArrayIndexOutOfBoundsException)