C++ প্রোগ্রামিংয়ে try, catch, এবং throw ব্লক ব্যবহার করে এক্সেপশন হ্যান্ডলিং করা হয়। এগুলোর মাধ্যমে প্রোগ্রামের ভুল (error) বা অপ্রত্যাশিত পরিস্থিতিকে সনাক্ত করে তা সমাধান করা যায়।
try ব্লক: এখানে এমন কোড রাখা হয়, যেখানে এক্সেপশন (ত্রুটি) ঘটতে পারে। যখন একটি ত্রুটি ঘটে, তখন এটি throw
ব্যবহার করে ত্রুটিটি ছুঁড়ে দেয় এবং try
ব্লক থেকে বেরিয়ে যায়।
throw: যখন ত্রুটি ঘটে, তখন throw
অপারেটর ব্যবহার করে ত্রুটি (এক্সেপশন) catch
ব্লকে পাঠানো হয়। throw
এর সাথে এক্সেপশনের ধরণ উল্লেখ করা হয়, যেমন int
, char*
, string
ইত্যাদি।
catch ব্লক: catch
ব্লক throw
করা এক্সেপশন গ্রহণ করে এবং সেই অনুযায়ী ত্রুটি সমাধানের জন্য ব্যবস্থা গ্রহণ করে। catch
ব্লকের প্যারামিটারে এক্সেপশনের ধরণ উল্লেখ করতে হয়, যাতে সঠিক ধরনের এক্সেপশন হ্যান্ডল করা যায়।
নিচে একটি উদাহরণ দেওয়া হলো যেখানে দুইটি সংখ্যার ভাগফল নির্ণয় করার সময় ডিভাইড-বাই-জিরো ত্রুটি থেকে রক্ষা করার জন্য try, catch, এবং throw ব্লক ব্যবহার করা হয়েছে।
#include <iostream>
using namespace std;
int main() {
int numerator, denominator;
cout << "Enter numerator: ";
cin >> numerator;
cout << "Enter denominator: ";
cin >> denominator;
try {
if (denominator == 0) {
throw "Division by zero is not allowed!"; // throw দিয়ে এক্সেপশন ছুঁড়ে দেওয়া
}
cout << "Result: " << numerator / denominator << endl;
}
catch (const char* msg) { // catch ব্লক এক্সেপশন গ্রহণ করে
cout << "Error: " << msg << endl;
}
return 0;
}
বর্ণনা:
try
ব্লকের মধ্যে বিভাজন অপারেশন করা হয়েছে। যদি denominator
এর মান 0
হয়, তবে throw
দিয়ে একটি বার্তা (স্ট্রিং টাইপ) ছুঁড়ে দেওয়া হয়েছে।catch
ব্লকটি সেই বার্তাটি গ্রহণ করে এবং কনসোলে প্রিন্ট করে।আউটপুট (যদি denominator
এ 0 ইনপুট দেওয়া হয়):
Enter numerator: 10
Enter denominator: 0
Error: Division by zero is not allowed!
একই try
ব্লক থেকে বিভিন্ন ধরনের এক্সেপশন ছুঁড়ে দেওয়া যেতে পারে এবং সেগুলোর জন্য আলাদা আলাদা catch
ব্লক ব্যবহার করা যেতে পারে।
#include <iostream>
using namespace std;
int main() {
try {
int num1, num2;
cout << "Enter two numbers: ";
cin >> num1 >> num2;
if (num2 == 0) {
throw 0; // int টাইপ এক্সেপশন
}
if (num1 < 0 || num2 < 0) {
throw "Negative numbers are not allowed"; // string টাইপ এক্সেপশন
}
cout << "Result: " << num1 / num2 << endl;
}
catch (int e) {
cout << "Error: Division by zero" << endl;
}
catch (const char* msg) {
cout << "Error: " << msg << endl;
}
return 0;
}
বর্ণনা:
try
ব্লকে দুটি এক্সেপশন হতে পারে:num2
এর মান 0
হয়, তাহলে throw 0;
দিয়ে int
টাইপ এক্সেপশন ছুঁড়ে দেওয়া হয়।num1
বা num2
এর মান ঋণাত্মক হয়, তাহলে throw "Negative numbers are not allowed";
দিয়ে string
টাইপ এক্সেপশন ছুঁড়ে দেওয়া হয়।catch
ব্লক ব্যবহার করে বিভিন্ন এক্সেপশন হ্যান্ডল করা হয়েছে।C++ এ catch(...)
ব্যবহার করে যেকোনো ধরনের এক্সেপশন ধরতে একটি সাধারণ catch
ব্লক তৈরি করা যায়, যা যেকোনো এক্সেপশন ধরতে পারে।
#include <iostream>
using namespace std;
int main() {
try {
throw 20;
}
catch (...) {
cout << "An exception occurred!" << endl;
}
return 0;
}
বর্ণনা:
catch(...)
সব ধরনের এক্সেপশন ধরতে সক্ষম। try
ব্লক থেকে যেকোনো এক্সেপশন ছুঁড়ে দিলেও catch(...)
তা ধরবে।আউটপুট:
An exception occurred!
throw
দিয়ে ছুঁড়ে দেওয়া হয়।throw
অপারেটর ব্যবহার করে এক্সেপশন catch
ব্লকে পাঠানো হয়।throw
করা এক্সেপশন গ্রহণ করে এবং তার জন্য প্রয়োজনীয় সমাধান ব্যবস্থা গ্রহণ করে।C++ এ এক্সেপশন হ্যান্ডলিং ব্যবহার করে প্রোগ্রামকে আরও স্থিতিশীল এবং ব্যবহারকারীর সাথে বন্ধুসুলভ করা যায়।
common.read_more