DML Exception Handling এবং Error Management হলো Apex কোডে ডেটা ম্যানিপুলেশন অপারেশনে (যেমন Insert, Update, Delete) কোনো ত্রুটি হলে তা সঠিকভাবে শনাক্ত এবং হ্যান্ডেল করার প্রক্রিয়া। Salesforce ডেটাবেজে DML অপারেশন চালানোর সময় যদি কোনো সমস্যা বা ত্রুটি ঘটে, তাহলে DML Exception তৈরি হয়। Exception Handling এর মাধ্যমে কোডে ত্রুটি সনাক্ত করে সঠিক পদক্ষেপ গ্রহণ করা যায়, যা অ্যাপ্লিকেশনের স্থায়িত্ব এবং পারফরম্যান্স উন্নত করে।
DML অপারেশন চলাকালীন কোনো ত্রুটি ঘটলে Salesforce DmlException তৈরি করে। DML Exception হ্যান্ডল করার জন্য try-catch ব্লক ব্যবহার করা হয়। catch
ব্লকের মাধ্যমে ত্রুটি সনাক্ত করে প্রয়োজনীয় পদক্ষেপ নেয়া যায়।
Account newAccount = new Account(Name = 'Test Account');
try {
// DML অপারেশন, যদি কোনো ত্রুটি ঘটে তবে Exception তৈরি হবে
insert newAccount;
System.debug('Account inserted successfully');
} catch (DmlException e) {
System.debug('Error occurred: ' + e.getMessage());
}
try
ব্লকে insert
DML অপারেশনটি সম্পন্ন করা হয়েছে এবং catch
ব্লকে DmlException হ্যান্ডল করা হয়েছে।catch
ব্লকে থাকা কোড এক্সিকিউট হবে এবং getMessage() মেথড ত্রুটির বার্তা প্রদর্শন করবে।বড় ডেটাসেট বা Bulk DML অপারেশনের সময় যখন অনেকগুলো রেকর্ডে অপারেশন চালানো হয়, তখন কিছু রেকর্ড সফল হতে পারে এবং কিছু ত্রুটির কারণে ব্যর্থ হতে পারে। Bulk DML Exception Handling করার জন্য Database.insert(), Database.update() এর মতো Database Methods ব্যবহার করা হয়। Database Methods-এ allOrNone
প্যারামিটার false
সেট করা হলে, ত্রুটি ঘটলেও অবশিষ্ট রেকর্ড সফলভাবে প্রক্রিয়া করা হয়।
List<Account> accountList = new List<Account>{
new Account(Name = 'Account 1'),
new Account(Name = ''), // Empty name, will cause an error
new Account(Name = 'Account 3')
};
// Database.insert() ব্যবহার করে Bulk DML অপারেশন
Database.SaveResult[] results = Database.insert(accountList, false);
for (Database.SaveResult result : results) {
if (result.isSuccess()) {
System.debug('Account Inserted Successfully: ' + result.getId());
} else {
System.debug('Error inserting Account: ' + result.getErrors()[0].getMessage());
}
}
Database.insert(accountList, false)
ব্যবহার করা হয়েছে, যেখানে allOrNone
false
সেট করা হয়েছে। ত্রুটি ঘটলেও অবশিষ্ট রেকর্ড সেভ হবে।Exception Handling এর সময় কয়েকটি গুরুত্বপূর্ণ প্রোপার্টি রয়েছে, যা Exception সম্পর্কে বিস্তারিত তথ্য প্রদান করে:
try {
Account newAccount = new Account(Name = '');
insert newAccount;
} catch (DmlException e) {
System.debug('Error: ' + e.getMessage());
System.debug('Affected Fields: ' + e.getDmlFields(0));
System.debug('DML Record ID: ' + e.getDmlId(0));
}
DML অপারেশনের সময় ত্রুটি হ্যান্ডল করার জন্য কিছু গুরুত্বপূর্ণ Error Management স্ট্র্যাটেজি নিচে উল্লেখ করা হলো:
Partial Success Handling: বড় ডেটাসেটের ক্ষেত্রে allOrNone
প্যারামিটার false
করে আংশিক সফলতা নিশ্চিত করা যায়। এতে কিছু রেকর্ড ব্যর্থ হলেও অবশিষ্ট রেকর্ড সফলভাবে প্রক্রিয়া হবে।
Error Logging: ত্রুটির লোগ রাখা একটি ভালো স্ট্র্যাটেজি, যাতে পরবর্তীতে তা বিশ্লেষণ করা যায়। ত্রুটি লোগ করে সঠিক সমাধান খুঁজে বের করা সহজ হয়।
User Notification: ত্রুটি হলে ব্যবহারকারীকে তাৎক্ষণিকভাবে অবহিত করা প্রয়োজন। কাস্টম ত্রুটি বার্তা ব্যবহারকারীদেরকে সঠিক তথ্য প্রদান করে।
Retry Mechanism: কিছু ক্ষেত্রে ত্রুটি ঘটলে DML অপারেশন পুনরায় চালনা করার প্রয়োজন হতে পারে। এমন অবস্থায় Retry Mechanism ব্যবহার করা যেতে পারে।
Custom Validation Messages: যখন কোনো ডেটা ভুল ইনপুট হয়, তখন কাস্টম ভ্যালিডেশন বার্তা ব্যবহারকারীদেরকে সমস্যার সঠিক কারণ বুঝতে সাহায্য করে।
try-catch
ব্লক ব্যবহার করে।Database.insert()
এবং Database.update()
ব্যবহার করে আংশিক সফলতা অর্জন করা যায়।DML Exception Handling এবং সঠিক Error Management স্ট্র্যাটেজি প্রয়োগ করে Salesforce Apex কোডে ডেটা ম্যানিপুলেশন কার্যক্রম আরও নির্ভরযোগ্য ও কার্যকরী করা যায়।
common.read_more