NSError ক্লাসটি Objective-C তে এরর হ্যান্ডলিং এবং ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এটি NSError অবজেক্টের মাধ্যমে নির্দিষ্ট এরর সম্পর্কিত তথ্য ধারণ করে, যেমন: এরর কোড, এরর ডোমেন, এবং একটি বর্ণনামূলক বার্তা। এটি Objective-C প্রোগ্রামিংয়ে নির্ভরযোগ্য এবং কার্যকরী এরর ম্যানেজমেন্ট তৈরি করার জন্য ব্যবহৃত হয়।
NSError তে আপনি এরর কেস, বর্ণনা এবং অন্যান্য বিস্তারিত তথ্য ব্যবহার করে প্রোগ্রামের লগিক ও প্রবাহ নিয়ন্ত্রণ করতে পারেন।
NSError এর মৌলিক ধারণা:
NSError ক্লাসের মাধ্যমে, আপনি:
- এরর কোড: একটি মান যা নির্দিষ্ট এররকে চিহ্নিত করে।
- ডোমেন: এররটির শ্রেণি বা প্রকার (যেমন: network, file I/O ইত্যাদি)।
- অবজেক্ট: এরর সংক্রান্ত কোনো অতিরিক্ত তথ্য বা বিস্তারিত (যেমন, এরর মেসেজ বা অবস্থা)।
NSError অবজেক্ট তৈরি এবং ব্যবহার
NSError ক্লাসের প্রপার্টি:
domain: এরর ডোমেন। এটি একটি স্ট্রিং যা এররটির শ্রেণী বা ক্ষেত্র নির্দেশ করে (যেমন: কাস্টম, Foundation এরর ইত্যাদি)।code: এরর কোড। এটি একটি পূর্ণসংখ্যা যা নির্দিষ্ট এরর টাইপের প্রতিনিধিত্ব করে।userInfo: একটি ডিকশনারি যা এরর সম্পর্কিত অতিরিক্ত তথ্য ধারণ করে, যেমন অতিরিক্ত ডেটা বা মেসেজ।
NSError ব্যবহার করে এরর হ্যান্ডলিং
NSError সাধারণত NSError অবজেক্ট দিয়ে ইনস্ট্যান্সিয়েট করা হয় এবং সেই এরর অবজেক্টের মাধ্যমে এরর তথ্য পরিচালনা করা হয়। সাধারণত, NSError অবজেক্টটি একটি প্যারামিটার হিসেবে ফাংশন বা মেথডে পাস করা হয় এবং যদি কোনো ত্রুটি ঘটে, তবে সেই ত্রুটির বিষয়ে ব্যবহারকারীকে অবহিত করা হয়।
NSError এর উদাহরণ:
#import <Foundation/Foundation.h>
@interface FileManager : NSObject
- (BOOL) openFile:(NSString *)fileName error:(NSError **)error;
@end
@implementation FileManager
- (BOOL) openFile:(NSString *)fileName error:(NSError **)error {
if (![fileName isEqualToString:@"validFile.txt"]) {
// যদি ফাইল নাম ভুল হয়, তবে এরর তৈরি করুন
NSDictionary *userInfo = @{
NSLocalizedDescriptionKey: @"Invalid file name",
NSLocalizedFailureReasonErrorKey: @"The file could not be found"
};
*error = [NSError errorWithDomain:@"com.myapp.fileError"
code:404
userInfo:userInfo];
return NO; // ফাইল খোলা সম্ভব হয়নি
}
// যদি ফাইল ঠিক থাকে
return YES;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
FileManager *fileManager = [[FileManager alloc] init];
NSError *error = nil;
if (![fileManager openFile:@"wrongFile.txt" error:&error]) {
// যদি এরর ঘটে, তবে এরর সম্পর্কিত তথ্য প্রদর্শন করুন
NSLog(@"Error: %@", error.localizedDescription);
NSLog(@"Failure Reason: %@", error.localizedFailureReason);
} else {
NSLog(@"File opened successfully!");
}
}
return 0;
}ব্যাখ্যা:
openFile:error:: এই মেথডটি একটি ফাইল খোলার চেষ্টা করে। যদি ফাইলের নাম সঠিক না হয়, তবে একটি NSError অবজেক্ট তৈরি করা হয়, যা এরর ডোমেন, কোড এবং ব্যবহারকারীর তথ্য সহ সংরক্ষিত থাকে।NSError: যদি কোনো সমস্যা ঘটে, তবেNSErrorঅবজেক্টের মাধ্যমে এরর ডোমেন, কোড, এবং বর্ণনা প্রদান করা হয়।error.localizedDescriptionএবংerror.localizedFailureReason: এগুলি এরর সম্পর্কিত বর্ণনামূলক তথ্য প্রদান করে, যা ব্যবহারকারীর জন্য সহজবোধ্য ব্যাখ্যা দেয়।
আউটপুট:
Error: Invalid file name
Failure Reason: The file could not be foundNSError ক্লাসের কিছু গুরুত্বপূর্ণ মেথড:
localizedDescription: এটি এররের একটি বর্ণনা প্রদান করে যা ব্যবহারকারীকে দেখানো যায়।localizedFailureReason: এটি ব্যবহারকারীকে দেখানোর জন্য এররটির কারণ বা ব্যাখ্যা প্রদান করে।userInfo: এটি একটি ডিকশনারি রিটার্ন করে, যা অতিরিক্ত তথ্য ধারণ করে (যেমন ডিবাগging তথ্য)।
আরেকটি উদাহরণ - NSError এর ব্যবহার সহ কাস্টম এরর কোড:
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSInteger, CustomErrorCode) {
CustomErrorFileNotFound = 1001,
CustomErrorAccessDenied = 1002
};
@interface FileManager : NSObject
- (BOOL) deleteFile:(NSString *)fileName error:(NSError **)error;
@end
@implementation FileManager
- (BOOL) deleteFile:(NSString *)fileName error:(NSError **)error {
if (![fileName isEqualToString:@"fileToDelete.txt"]) {
// কাস্টম এরর কোড দিয়ে এরর তৈরি করুন
NSDictionary *userInfo = @{
NSLocalizedDescriptionKey: @"File not found",
NSLocalizedFailureReasonErrorKey: @"The specified file was not found in the directory"
};
*error = [NSError errorWithDomain:@"com.myapp.fileError"
code:CustomErrorFileNotFound
userInfo:userInfo];
return NO;
}
// ফাইল মুছে ফেলার প্রক্রিয়া এখানে
return YES;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
FileManager *fileManager = [[FileManager alloc] init];
NSError *error = nil;
if (![fileManager deleteFile:@"nonExistentFile.txt" error:&error]) {
NSLog(@"Error: %@", error.localizedDescription);
NSLog(@"Failure Reason: %@", error.localizedFailureReason);
} else {
NSLog(@"File deleted successfully!");
}
}
return 0;
}ব্যাখ্যা:
NS_ENUM: এটি NSError এর কাস্টম এরর কোড ডিফাইন করার জন্য ব্যবহৃত হয়।- কাস্টম এরর কোড: এখানে
CustomErrorFileNotFoundএকটি কাস্টম এরর কোড, যা নির্দিষ্ট ফাইল না পাওয়ার পরিস্থিতিতে তৈরি হচ্ছে।
NSError এর ব্যবহার:
- Error Handling: NSError মূলত প্রোগ্রামে ত্রুটি পরিচালনার জন্য ব্যবহৃত হয়। আপনি কোনো অপারেশন যেমন ফাইল I/O, নেটওয়ার্ক কল বা ব্যবহারকারী ইনপুট যাচাই করতে পারেন।
- Error Reporting: যখন কোনো ত্রুটি ঘটে, তখন NSError ত্রুটির তথ্য ব্যাখ্যা করতে ব্যবহৃত হয় এবং ব্যবহারকারীর জন্য আরো স্পষ্ট বর্ণনা প্রদান করে।
- Error Propagation: NSError অবজেক্টটি ফাংশন বা মেথডের আর্গুমেন্ট হিসেবে পাস করা হয় এবং ত্রুটি সংঘটিত হলে সেই ত্রুটি কার্যক্রমের ভিতরে উত্থাপন করা হয়।
সারাংশ:
NSError Objective-C তে Error Handling এর জন্য ব্যবহৃত একটি ক্লাস। এটি ত্রুটি সম্পর্কিত তথ্য ধারণ করে, যেমন ত্রুটির কোড, বর্ণনা এবং অন্যান্য অতিরিক্ত তথ্য। NSError এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের মধ্যে ত্রুটির নির্দিষ্ট কারণ এবং তার ফলাফল বুঝতে এবং ব্যবহারকারীকে স্পষ্ট বার্তা প্রদানের জন্য ত্রুটি পরিচালনা করতে পারেন।
Read more