যদি ফেলে দেওয়া System.Exception
এত খারাপ বিবেচিত হয় তবে প্রথমে কেন Exception
তৈরি করা হয়নি abstract
?
এইভাবে, কল করা সম্ভব হবে না:
throw new Exception("Error occurred.");
এটি ঘটেছে ত্রুটি সম্পর্কে আরও বিশদ সরবরাহ করতে প্রাপ্ত ব্যতিক্রমগুলি ব্যবহার করে প্রয়োগ করবে।
উদাহরণস্বরূপ, যখন আমি কোনও গ্রন্থাগারের জন্য একটি কাস্টম ব্যতিক্রম শ্রেণিবিন্যাস সরবরাহ করতে চাই, আমি সাধারণত আমার ব্যতিক্রমগুলির জন্য একটি বিমূর্ত বেস শ্রেণি ঘোষণা করি:
public abstract class CustomExceptionBase : Exception
{
/* some stuff here */
}
এবং তারপরে আরও কিছু সুনির্দিষ্ট উদ্দেশ্যে ব্যতিক্রম প্রাপ্ত:
public class DerivedCustomException : CustomExceptionBase
{
/* some more specific stuff here */
}
তারপরে যেকোন লাইব্রেরি পদ্ধতিতে কল করার সময় লাইব্রেরি থেকে আসা কোনও ত্রুটি সরাসরি ধরার জন্য এই জেনেরিক চেষ্টা / ক্যাচ ব্লক থাকতে পারে:
try
{
/* library calls here */
}
catch (CustomExceptionBase ex)
{
/* exception handling */
}
এটি কি একটি ভাল অনুশীলন?
Exception
বিমূর্ত তৈরি করা ভাল কি ?
সম্পাদনা করুন: আমার বক্তব্যটি এখানে একটি ব্যতিক্রম শ্রেণি চিহ্নিত করা abstract
হলেও আপনি এটি এখনও একটি ক্যাচ-অল ব্লকে ধরতে পারেন। এটমস্ট্রাক্ট করা কেবল প্রোগ্রামারদের "সুপার-ওয়াইড" ব্যতিক্রম নিক্ষেপ করার একমাত্র উপায় a সাধারণত, যখন আপনি স্বেচ্ছায় একটি ব্যতিক্রম ছুঁড়ে ফেলাবেন তখন আপনার কী হওয়া উচিত তা এবং এটি কেন হয়েছিল তা আপনার জানা উচিত। এইভাবে আরও নির্দিষ্ট ব্যতিক্রম প্রকারটি ছুঁড়ে ফেলতে বাধ্য করা হচ্ছে।