এই কোডটি এমন একটি অ্যাপ্লিকেশনের অংশ যা একটি ওডিবিসি সংযুক্ত ডাটাবেস থেকে পড়ে এবং লিখে। এটি ডাটাবেসে একটি রেকর্ড তৈরি করে এবং তারপরে পরীক্ষা করে রেকর্ডটি সফলভাবে তৈরি করা হয়েছে কিনা, তারপরে ফিরে আসবে true
।
নিয়ন্ত্রণ প্রবাহ সম্পর্কে আমার বোঝা নীচে রয়েছে:
command.ExecuteNonQuery()
InvalidOperationException
"বস্তুর বর্তমান অবস্থার জন্য কোনও মেথড কল অবৈধ" থাকাকালীন নথিভুক্ত করা হয় । অতএব, যদি এটি ঘটে থাকে, try
ব্লকের কার্যকর হওয়া finally
বন্ধ হয়ে যাবে, ব্লকটি কার্যকর হবে, তারপরে return false;
নীচের অংশে চালিত হবে ।
তবে, আমার আইডিই দাবি করে যে এটি return false;
অ্যাক্সেসযোগ্য কোড। এবং এটি সত্য বলে মনে হচ্ছে, আমি এটিকে সরাতে পারি এবং এটি কোনও অভিযোগ ছাড়াই সংকলন করে। যাইহোক, আমার জন্য এটি দেখে মনে হচ্ছে যে উল্লিখিত ব্যতিক্রমটি ছুঁড়ে দেওয়া কোড পথের কোনও ফেরতের মান থাকবে না be
private static bool createRecord(String table,
IDictionary<String,String> data,
System.Data.IDbConnection conn,
OdbcTransaction trans) {
[... some other code ...]
int returnValue = 0;
try {
command.CommandText = sb.ToString();
returnValue = command.ExecuteNonQuery();
return returnValue == 1;
} finally {
command.Dispose();
}
return false;
}
আমার বোঝার ভুল এখানে কী?
Dispose
সুস্পষ্টভাবে কল করবেন না , তবে লিখুন using
:using (var command = ...) {command.CommandText = sb.ToString(); return command.ExecuteNonQuery(); }
finally
ব্লক মানে যা আপনি ভাবেন তার চেয়ে অন্য কিছু।