আমি সিরিয়ালটিজযোগ্য ডিটিও-তে ডেটা ট্রান্সফার অবজেক্ট সি # নিবন্ধটি দেখছি।
নিবন্ধটিতে কোডের এই অংশটি অন্তর্ভুক্ত রয়েছে:
public static string SerializeDTO(DTO dto) {
try {
XmlSerializer xmlSer = new XmlSerializer(dto.GetType());
StringWriter sWriter = new StringWriter();
xmlSer.Serialize(sWriter, dto);
return sWriter.ToString();
}
catch(Exception ex) {
throw ex;
}
}
আর্টিকেলটির বাকী অংশটি বুদ্ধিমান এবং যুক্তিসঙ্গত মনে হচ্ছে (একটি নুব-র কাছে) তবে সেই চেষ্টা-ধরা-থ্রো একটি ডাব্লুটিএফএক্সেপশনকে ছুঁড়ে ফেলেছে ... এটি কি ব্যতিক্রমকে সামলানো না একেবারেই সমান নয়?
অতএব:
public static string SerializeDTO(DTO dto) {
XmlSerializer xmlSer = new XmlSerializer(dto.GetType());
StringWriter sWriter = new StringWriter();
xmlSer.Serialize(sWriter, dto);
return sWriter.ToString();
}
অথবা আমি সি # তে ত্রুটি পরিচালনার বিষয়ে মৌলিক কিছু অনুভব করছি? এটি জাভা (মাইনাস চেক ব্যতিক্রমগুলি) এর মতোই বেশ, তাই না? ... এটি উভয়ই সি ++ পরিমার্জন করেছে।
স্ট্যাক ওভারফ্লো প্রশ্ন পুনরায় নিক্ষেপণ প্যারামিটার-কম ধরা এবং কিছু না করার মধ্যে পার্থক্য? আমার বিতর্কটি সমর্থন করে বলে মনে হচ্ছে যে চেষ্টা করা-থ্রো-হ'ল একটি অপশন।
সম্পাদনা করুন:
ভবিষ্যতে যে কেউ এই থ্রেডটি খুঁজে পান তার সংক্ষিপ্তসার হিসাবে ...
করো না
try {
// Do stuff that might throw an exception
}
catch (Exception e) {
throw e; // This destroys the strack trace information!
}
স্ট্যাক ট্রেস তথ্য সমস্যার মূল কারণ সনাক্ত করতে গুরুত্বপূর্ণ হতে পারে!
আপনি কি
try {
// Do stuff that might throw an exception
}
catch (SqlException e) {
// Log it
if (e.ErrorCode != NO_ROW_ERROR) { // filter out NoDataFound.
// Do special cleanup, like maybe closing the "dirty" database connection.
throw; // This preserves the stack trace
}
}
catch (IOException e) {
// Log it
throw;
}
catch (Exception e) {
// Log it
throw new DAOException("Excrement occurred", e); // wrapped & chained exceptions (just like java).
}
finally {
// Normal clean goes here (like closing open files).
}
কম সুনির্দিষ্ট (জাভা যেমন) এর আগে আরও নির্দিষ্ট ব্যতিক্রমগুলি ধরুন C
তথ্যসূত্র: