Exception Handling হল একটি প্রক্রিয়া যা Java প্রোগ্রামিং ভাষায় ত্রুটির (error) পরিস্থিতি সমাধান করতে ব্যবহৃত হয়। যখন কোনো প্রোগ্রামে কোনো অপ্রত্যাশিত পরিস্থিতি ঘটে, তখন একটি exception উত্পন্ন হয় এবং এটি প্রোগ্রামের স্বাভাবিক প্রবাহকে বিঘ্নিত করে। Exception Handling এর মাধ্যমে এই পরিস্থিতি হ্যান্ডেল করা যায় এবং প্রোগ্রাম চলতে থাকে। এটি কোডের স্থিতিশীলতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সাহায্য করে।
Java তে Exception Handling এর প্রক্রিয়া মূলত ৫টি প্রধান অংশে বিভক্ত:
1. try Block
tryblock এমন একটি ব্লক যেখানে কোড লেখা হয়, যেটি ত্রুটি উত্পন্ন করতে পারে। যদিtryblock-এর মধ্যে কোনো exception ঘটে, তখন সিস্টেম ত্রুটির ধরন সনাক্ত করে তা catch block-এ পাঠায়।
try {
// Code that might throw an exception
int result = 10 / 0; // ArithmeticException
}
2. catch Block
catchblock ত্রুটিটিtryblock থেকে ধরতে ব্যবহৃত হয়। যখনtryblock তে কোনো exception ঘটে, তখন তা catch block-এ পাঠানো হয় এবং সেখানে exception এর ধরন অনুযায়ী কিভাবে সেটি হ্যান্ডেল করা হবে তা উল্লেখ করা হয়।
catch (ArithmeticException e) {
// Handling exception
System.out.println("Error: " + e.getMessage());
}
- এখানে,
ArithmeticExceptionএকটি নির্দিষ্ট exception টাইপ যা try ব্লকে ঘটে।
3. finally Block
finallyblock এমন একটি ব্লক যাtry-catchব্লক শেষ হবার পর, ত্রুটি ঘটুক বা না ঘটুক, সর্বদা 실행 হয়। এটি সাধারণত এমন কাজের জন্য ব্যবহৃত হয় যা সম্পন্ন করা প্রয়োজন যেমন resource release, closing files, database connections ইত্যাদি।
finally {
// Code that will always be executed after try or catch block
System.out.println("This block is always executed.");
}
finallyblock তখনও চালু হবে যদিcatchblock এ ত্রুটি হ্যান্ডেল না করা হয়। এটি মূলত পরিষ্কার করার জন্য ব্যবহৃত হয়, যেমন ফাইল বন্ধ করা, ডেটাবেস সংযোগ বন্ধ করা ইত্যাদি।
4. Multiple Catch Blocks
- একাধিক exception ধরতে
try-catchব্লকে একাধিকcatchblock ব্যবহার করা যেতে পারে। প্রতিটিcatchblock একটি নির্দিষ্ট exception টাইপের জন্য থাকে।
try {
// Code that might throw different exceptions
int result = 10 / 0;
String str = null;
System.out.println(str.length()); // NullPointerException
} catch (ArithmeticException e) {
System.out.println("ArithmeticException: " + e.getMessage());
} catch (NullPointerException e) {
System.out.println("NullPointerException: " + e.getMessage());
}
- এখানে, দুটি ভিন্ন exception হ্যান্ডেল করা হয়েছে: ArithmeticException এবং NullPointerException।
5. throw Keyword
throwকীওয়ার্ড ব্যবহার করে একটি exception প্রোগ্রামmatically তৈরি করা যায়। এটি exception ছোড়ে এবং তা catch block এ ধরা যায়।
if (age < 18) {
throw new IllegalArgumentException("Age must be 18 or older.");
}
- এখানে,
IllegalArgumentExceptionএকটি exception ছোড়া হয়েছে যদি ব্যবহারকারীর বয়স ১৮ বছরের কম হয়।
6. throws Keyword
throwsকীওয়ার্ড ব্যবহার করে কোন মেথডে কোন ধরনের exception উত্পন্ন হতে পারে তা নির্দিষ্ট করা হয়। এটি মেথড সিগনেচারে ব্যবহৃত হয় এবং এটিtry-catchব্লকের বাইরে থাকে। সাধারণত এটি checked exceptions এর জন্য ব্যবহৃত হয়।
public void someMethod() throws IOException {
// Code that might throw IOException
}
- এখানে,
IOExceptionএকটি checked exception যা throws কীওয়ার্ড ব্যবহার করে উত্পন্ন হতে পারে।
Exception Handling এর সুবিধা:
- Error Isolation:
- exception handling এর মাধ্যমে কোনো নির্দিষ্ট অংশে ত্রুটি ঘটলে তা পুরো প্রোগ্রামকে প্রভাবিত না করে শুধুমাত্র সংশ্লিষ্ট অংশকে প্রভাবিত করে। এর ফলে প্রোগ্রামটি চলমান থাকে।
- Graceful Termination:
- exception ঘটলে প্রোগ্রামটি সুন্দরভাবে বন্ধ হতে পারে, ত্রুটির বার্তা ব্যবহারকারীকে প্রদান করে এবং পরবর্তীতে কার্যকলাপ করার জন্য নির্দেশনা দিতে পারে।
- Maintainability:
- exception handling কোডের maintainability বাড়ায়, কারণ error ঘটলে তা সহজে ধরা পড়ে এবং এর সমাধান করা যায়।
- Separation of Concerns:
- exception handling দ্বারা কোডের মূল অংশ এবং ত্রুটি হ্যান্ডলিং আলাদা রাখা হয়, ফলে কোডটি আরও পরিষ্কার ও পড়তে সুবিধাজনক হয়।
এছাড়া, Java-তে Exception Types এর মধ্যে দুইটি প্রধান শ্রেণী রয়েছে:
- Checked Exceptions:
- Checked exceptions হল ত্রুটি যা compile-time তে চেক করা হয়। এগুলি সাধারণত সিস্টেমের বাইরে (ফাইল I/O, নেটওয়ার্ক ইত্যাদি) বা runtime তে সিস্টেমের কোনো অবস্থা সম্পর্কে জানায়।
- উদাহরণ:
IOException,SQLExceptionইত্যাদি।
- Unchecked Exceptions:
- Unchecked exceptions হল ত্রুটি যা runtime তে ঘটে এবং কম্পাইলেশন সময় চেক করা হয় না। এগুলি সাধারণত প্রোগ্রামের লজিকাল ত্রুটি যেমন বিভাজন বা শূন্য রেফারেন্স।
- উদাহরণ:
NullPointerException,ArithmeticException,ArrayIndexOutOfBoundsExceptionইত্যাদি।
সারাংশ:
Java Exception Handling একটি শক্তিশালী প্রক্রিয়া যা ব্যবহারকারীদের ত্রুটি সম্পর্কে জানায় এবং প্রোগ্রামের চলমানতা বজায় রাখে। try-catch, finally, throw, এবং throws কীওয়ার্ডের মাধ্যমে ত্রুটির সঠিক ব্যবস্থাপনা করা হয়। এটি প্রোগ্রামিং উন্নত করতে সাহায্য করে, যাতে সিস্টেমের ক্র্যাশ বা অপ্রত্যাশিত ফলাফল রোধ করা যায়।
Read more