Objective-C তে exceptions ব্যবহৃত হয় কিছু অপ্রত্যাশিত বা ত্রুটি পরিস্থিতি (error situations) হ্যান্ডল করার জন্য। Custom Exception তৈরি করার মাধ্যমে আপনি নিজস্ব ত্রুটি বা সমস্যা তৈরি করতে পারেন এবং সেগুলি খুব সহজভাবে হ্যান্ডল করতে পারবেন।
Objective-C তে exceptions তৈরি এবং হ্যান্ডল করার জন্য কিছু বিশেষ কিওয়ার্ড রয়েছে: @try, @catch, @throw, এবং @finally। এগুলির মাধ্যমে আপনি ত্রুটির পরিস্থিতি চিহ্নিত এবং হ্যান্ডল করতে পারবেন।
1. Exception Handling এর মৌলিক কনসেপ্ট
Objective-C তে exception handling একটি mechanism যার মাধ্যমে আপনি runtime এর সময় ঘটতে পারে এমন ত্রুটিগুলি @try, @catch, @throw, এবং @finally ব্যবহার করে হ্যান্ডল করতে পারেন।
@try: এটি সেই ব্লক যেখানে আপনি যে কোডটি এক্সিকিউট করতে চান তা রাখবেন, যেখানে ত্রুটি হতে পারে।@catch: এটি সেই ব্লক যেখানে ত্রুটিটি ধরা হবে এবং প্রাসঙ্গিক প্রতিক্রিয়া প্রদান করা হবে।@throw: এটি exception ফেলে দেয়, অর্থাৎ exception তৈরি করা হয়।@finally: এটি optional, এবং এটি try ব্লকের পর যে কাজ করতে হবে তা ব্যবহৃত হয়, যেমন ক্লিনআপ কাজ।
2. Custom Exception তৈরি করা
Objective-C তে Custom Exception তৈরি করতে হলে, আপনাকে একটি নতুন Exception Class তৈরি করতে হবে। একটি exception class সাধারণত NSException থেকে ইনহেরিট করে।
Custom Exception Class তৈরি করা
#import <Foundation/Foundation.h>
// Custom Exception Class
@interface MyCustomException : NSException
@end
@implementation MyCustomException
@endএখানে, MyCustomException একটি কাস্টম exception ক্লাস যা NSException থেকে ইনহেরিট করা হয়েছে। আপনি এখানে কোনো অতিরিক্ত প্রপার্টি বা মেথডও যোগ করতে পারেন যদি প্রয়োজন হয়।
3. Exception Throwing (Exception ফেলা)
@throw কিওয়ার্ড ব্যবহার করে আপনি একটি exception ফেলে দিতে পারেন। সাধারণত এটি সেই জায়গায় ব্যবহার করা হয় যেখানে একটি ত্রুটি বা সমস্যা ঘটে এবং তখন আপনি সেই ত্রুটির তথ্য সহ একটি exception তৈরি করেন।
Exception Throwing উদাহরণ:
#import <Foundation/Foundation.h>
@interface MyCustomException : NSException
@end
@implementation MyCustomException
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
@try {
// Custom exception ফেলা হচ্ছে
@throw [[MyCustomException alloc] initWithName:@"InvalidValueException"
reason:@"The value provided is invalid"
userInfo:nil];
}
@catch (MyCustomException *exception) {
NSLog(@"Caught custom exception: %@, reason: %@", exception.name, exception.reason);
}
@finally {
NSLog(@"Finally block executed.");
}
}
return 0;
}এখানে @throw কিওয়ার্ড ব্যবহার করে আমরা MyCustomException ফেলে দিয়েছি, এবং সেই exception কে @catch ব্লকে ধরে তার তথ্য প্রিন্ট করেছি।
@throw: একটি কাস্টম exception ফেলে, যেটি@catchব্লকে ধরা হয়।@catch: exception ধরার পর কিভাবে তার সাথে কাজ করা হবে তা নির্ধারণ করা হয়। এখানে exception এর নাম এবং কারণ (reason) প্রিন্ট করা হয়েছে।@finally: এটি ঐ অংশে চলে আসে যা ত্রুটি ঘটলেও এক্সিকিউট হয়। এটি ক্লিনআপ কাজের জন্য ব্যবহার করা যেতে পারে, যেমন মেমরি মুক্ত করা বা কোনো ফাইল ক্লোজ করা।
4. Exception Handling এর সুবিধা
- Error Handling: Custom exception ব্যবহারের মাধ্যমে আপনি যেকোনো ধরণের ত্রুটির পরিস্থিতি ধরা এবং হ্যান্ডল করতে পারবেন।
- Cleaner Code: কোডের মধ্যে যেকোনো ত্রুটি নির্দিষ্টভাবে handle করার জন্য exception ব্যবহার করা হয়, যা কোডটিকে পরিষ্কার এবং রক্ষণাবেক্ষণে সহজ করে।
- Debugging: Exception এর মাধ্যমে আপনি যেকোনো সমস্যা চিহ্নিত করতে এবং তার কার্যকরী সমাধান দিতে পারেন।
5. Custom Exception এর মধ্যে Additional Information রাখা
আপনি custom exception এ additional information রাখতেও পারেন, যা ত্রুটির কারণে আরও বিস্তারিত ব্যাখ্যা দেয়। যেমন, exception এর মধ্যে কোনো অতিরিক্ত userInfo ডেটা যোগ করা।
UserInfo দিয়ে Custom Exception Example:
#import <Foundation/Foundation.h>
@interface MyCustomException : NSException
@end
@implementation MyCustomException
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
@try {
// Custom exception ফেলা হচ্ছে userInfo সহ
NSDictionary *userInfo = @{@"ErrorCode": @404, @"ErrorDescription": @"Page Not Found"};
@throw [[MyCustomException alloc] initWithName:@"PageNotFoundException"
reason:@"The requested page could not be found"
userInfo:userInfo];
}
@catch (MyCustomException *exception) {
NSLog(@"Caught custom exception: %@, reason: %@", exception.name, exception.reason);
NSLog(@"Error info: %@", exception.userInfo); // User info print করা হচ্ছে
}
@finally {
NSLog(@"Finally block executed.");
}
}
return 0;
}এখানে userInfo Dictionary ব্যবহার করা হয়েছে, যেখানে error code এবং error description এর মতো অতিরিক্ত তথ্য রাখা হয়েছে। এই তথ্যগুলি exception এর মধ্যে ফেলা হয়েছে এবং পরে @catch ব্লকে তা এক্সেস করা হয়েছে।
6. Error Handling এবং Exception
- Error Handling সাধারণত return value এর মাধ্যমে ঘটে, যেখানে কোনো ফাংশন সফল হলে একটি মান রিটার্ন করে এবং ত্রুটির ক্ষেত্রে
nilবা অন্য কোনো মান রিটার্ন করে। - Exceptions হল আরো জটিল পরিস্থিতি যেখানে কোড execution এর একটি অংশ ব্যর্থ হয়ে যেতে পারে। এই ক্ষেত্রে exception throwing এবং catching ব্যবহার করা হয়।
সারাংশ
- Custom Exception তৈরি করতে NSException বা তার সাবক্লাস ব্যবহার করা হয়। আপনি exception ফেলার জন্য
@throwকিওয়ার্ড এবং exception ধরার জন্য@catchকিওয়ার্ড ব্যবহার করেন। - Exception Handling আপনাকে ত্রুটির পরিস্থিতি নির্ধারণ করতে এবং সেগুলির সাথে কাজ করতে সহায়তা করে।
@try,@catch,@throw, এবং@finallyব্যবহার করে আপনি exception handling করতে পারেন। - UserInfo ব্যবহার করে আপনি exception এর সাথে অতিরিক্ত তথ্য সংরক্ষণ করতে পারেন।
Objective-C তে exception handling একটি শক্তিশালী পদ্ধতি, যা কোডের স্থায়িত্ব এবং নির্ভরযোগ্যতা উন্নত করতে সহায়তা করে।
Read more