সফটওয়্যার ডেভেলপমেন্ট ইন C শার্প (C#)- [পর্ব-১০] :: Exception Handling -৩

ডেভেলপমেন্ট ইন C শার্প

সফটওয়্যার ডেভেলপমেন্ট ইন C শার্প (C#) – Exception Handling পর্ব-১

সফটওয়্যার ডেভেলপমেন্ট ইন C শার্প (C#) – Exception Handling পর্ব-২

আগের পর্বের TotalPriceCalculator Class টি দেখে নিইঃ

আগের পর্বের  TotalPriceButton এর Click event  কোডটিও নিন্মরুপ:

ধরুন ইউজার ইনপুট হিসেবে string দিলো এখন আপনি যদি ডিবাগিং করে UI এর catch  ব্লক পর্যবেক্ষণ করেন তাহলে দেখবেন GetTotalPrice() মেথড Exception object throw করেছে অর্থাৎ GetTotalPrice() মেথডটিতে মূলত FormatException Exception ঘটলেও  মেথডটি throw new Exception() কমান্ডটির জন্য তার Caller  অর্থাৎ এক্ষেত্রে UI এর দিকে শুধুমাত্র Exception object (FormatException object নয়) throw করেছে।

আবার ইনপুট হিসেবে যদি 255 এর বেশি সংখ্যা দেয়া হয় তাহলে মেথডটিতে OverflowException ঘটবে কিন্তু GetTotalPrice()   মেথড UI এর দিকে  শুধুমাত্র Exception object (OverflowException object নয়) throw করবে।

এক্ষেত্রে  আরো কিছু সংখ্যক catch ব্লক যদি থাকতো তাহলে সবাই Exception object throw করবে (ম্যাসেজিংয়ের কথা আপাতত ভুলে যান)। এই ধরনের কোডিংয়ের সমস্যা হলো আপনি প্রোগ্রামার হয়েও ঠিক কোন ধরনের Exception (InnerException) ঘটেছে তা UI থেকে স্পেসিফাই করতে পারবেন না। আপনার প্রোজেক্ট যদি আরো বড় হয় অর্থাৎ অনেকগুলো ক্লাস আর প্রত্যেক ক্লাসের ভীতর অনেক মেথড থাকে তাহলে সব মেথড যদি এই রকম আচরণ করে তাহলে আপনার পক্ষে ঐ Exception ঘটার লোকেশানে গিয়ে তা ঠিক করে দেয়া অনেক সময় সাপেক্ষ হবে। এক্ষেত্রে বুদ্ধিমানের কাজ হবে Exception ঘটার সাথে সাথে ঐ মেথড থেকে ঠিক কোন ধরনের Exception ঘটেছে তা throw করে দেয়া অর্থাৎ FomatException ঘটলে কলারের দিকে FormatException Object throw করে দেয়া। তাহলে কাজটি কিভাবে করবো?
প্রথমেই আসুন আমরা Exception এর overload গুলো সম্পর্কে জেনেনিইঃ

উপরের ছবি থেকে আমরা দেখতে পাচ্ছি Exception Class এর ৩ টি constructor আছে।

১ম constructor কোন প্যারামিটার নেয়না।

২য় constructor ১টি string প্যারামিটার নেয় অর্থাৎ আপনি যেই ধরনের মেসেজ তার কলারকে দেখাতে চান।

৩য় constructor ১টি string এবং ১টি Exception প্যারামিটার নেয় অর্থাৎ আপনি তার কলারকে কি ধরনের মেসেজ দেখাতে চান এবং কোন ধরনের innerException ঘটেছে তা throw করতে পারবেন।

তাহলে আমরা GetTotalPrice() মেথডের কোডটিকে নিচের মতো লিখতে পারি:

এক্ষেত্রে আমি Exception এর তৃতীয় constructor টি ব্যাবহার করেছি। এখন আপনি যদি ডিবাগিং করে UI এর catch  ব্লক পর্যবেক্ষণ করেন তাহলে দেখবেন GetTotalPrice() মেথড কোন ধরনের innerException ঘটেছে তাও throw করেছে।

innerException টা UI থেকে বুঝতে পারলে বড় প্রজেক্টে আপনার জন্য সমাধান দেয়াটা কিছুটা সহজ হবে। Exception Handling এর তিনটি পর্বই যদি আপনি ভালোভাবে পড়ে থাকেন তাহলে আশাকরি ইনশাআল্লাহ্‌ Exception ভালোভাবে বুঝতে আপনার কোন সমস্যা হবেনা।

টিউটোরিয়াল গুলোতে কোন ভুল বা কনসেপ্টে সমস্যা থাকলে অবশ্যই পরামর্শ দিবেন।

Level 0

আমি Hasnat Riaz। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 11 বছর 5 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 16 টি টিউন ও 14 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 1 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।

প্রাক্তন ছাত্র, কম্পিউটার সায়েন্স এন্ড টেলিকমিউনিকেশন ইঞ্জিনিয়ারিং বিভাগ, নোয়াখালী বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস