আমার পটভূমিটি সি # তে রয়েছে এবং আমি সম্প্রতি পাইথনে প্রোগ্রামিং শুরু করেছি। যখন কোনও ব্যতিক্রম নিক্ষেপ করা হয় তখন আমি সাধারণত এটিকে অন্য একটি ব্যতিক্রমতে আবৃত করতে চাই যা আরও তথ্য যুক্ত করে, যখন এখনও পুরো স্ট্যাক ট্রেস দেখায়। এটি সি # তে বেশ সহজ, তবে পাইথনে আমি কীভাবে এটি করব?
যেমন। সি # তে আমি এরকম কিছু করব:
try
{
ProcessFile(filePath);
}
catch (Exception ex)
{
throw new ApplicationException("Failed to process file " + filePath, ex);
}
পাইথনে আমি অনুরূপ কিছু করতে পারি:
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file ' + filePath, e)
... তবে এটি অন্তর্নিহিত ব্যতিক্রমগুলির ট্রেসব্যাক হারিয়ে ফেলে!
সম্পাদনা: আমি উভয় ব্যতিক্রম বার্তা এবং উভয় স্ট্যাক ট্রেস দেখতে এবং দুটি সংযুক্ত করতে চাই। এটি, আমি আউটপুটটিতে দেখতে চাই যে ব্যতিক্রম এক্স এখানে ঘটেছে এবং তারপরে Y সেখানে ব্যতিক্রম করবে - যা আমি সি # তে চাই। পাইথন ২.6 এ এটি কি সম্ভব? দেখে মনে হচ্ছে এখন পর্যন্ত আমি যা করতে পারি সেরা (গ্লেন মেইনার্ডের উত্তরের ভিত্তিতে):
try:
ProcessFile(filePath)
except Exception as e:
raise Exception('Failed to process file' + filePath, e), None, sys.exc_info()[2]
এটিতে বার্তা এবং উভয় ট্রেসব্যাক উভয়ই অন্তর্ভুক্ত রয়েছে তবে ট্রেসব্যাকটিতে কোন ব্যতিক্রম ঘটেছে তা তা দেখায় না।