যে বছরগুলিতে আমি প্রোগ্রামিং এবং বিকাশকারী সিস্টেমগুলি ব্যয় করেছি, সেখানে কেবলমাত্র দুটি পরিস্থিতি রয়েছে যেখানে আমি প্রশ্নের প্যাটার্নটি দরকারী হিসাবে পেয়েছি (উভয় ক্ষেত্রেই দমনটি নিক্ষিপ্ত ব্যতিক্রমের লগিংও অন্তর্ভুক্ত করে, আমি প্লেইন ক্যাচ বিবেচনা করি না এবং null
প্রত্যাবর্তনকে একটি ভাল অনুশীলন হিসাবে দেখি না )।
দুটি পরিস্থিতি নিম্নলিখিত:
1. যখন ব্যতিক্রমটিকে ব্যতিক্রমী রাষ্ট্র হিসাবে বিবেচনা করা হত না
এটি যখন আপনি কোনও ডেটাতে কোনও অপারেশন করেন, যা ফেলে দিতে পারে, আপনি জানেন যে এটি নিক্ষেপ করতে পারে তবে আপনি এখনও আপনার অ্যাপ্লিকেশনটি চালিয়ে যেতে চান, কারণ আপনার প্রক্রিয়াজাত ডেটার প্রয়োজন নেই। আপনি যদি সেগুলি গ্রহণ করেন তবে এটি ভাল, আপনি যদি তা না পান তবে এটিও ভাল।
শ্রেণীর কিছু alচ্ছিক গুণাবলী মনে আসতে পারে।
২. আপনি যখন কোনও অ্যাপ্লিকেশনটিতে ইতিমধ্যে ব্যবহৃত ইন্টারফেস ব্যবহার করে একটি লাইব্রেরি একটি নতুন (আরও ভাল, দ্রুত?) সরবরাহ করছেন তখন
কল্পনা করুন যে কোনও প্রকারের পুরাতন পাঠাগারটি ব্যবহার করে আপনার কাছে একটি অ্যাপ্লিকেশন রয়েছে, যা ব্যতিক্রম ছুঁড়েছে না তবে null
ত্রুটিতে ফিরে এসেছে । সুতরাং আপনি এই লাইব্রেরির জন্য একটি অ্যাডাপ্টার তৈরি করেছেন, গ্রন্থাগারের মূল এপিআই অনুলিপি করছেন এবং আপনার অ্যাপ্লিকেশনটিতে এই নতুন (এখনও নিক্ষেপযোগ্য নয়) ইন্টারফেসটি ব্যবহার করছেন এবং null
নিজেই চেকগুলি পরিচালনা করছেন ।
লাইব্রেরির একটি নতুন সংস্করণ আসে, বা সম্ভবত সম্পূর্ণ ভিন্ন লাইব্রেরি একই কার্যকারিতা সরবরাহ করে, যা null
এস ফেরানোর পরিবর্তে ব্যতিক্রম ছুঁড়েছে এবং আপনি এটি ব্যবহার করতে চান।
আপনি আপনার মূল অ্যাপ্লিকেশনটিতে ব্যতিক্রমগুলি ফাঁস করতে চান না, সুতরাং আপনি এই নতুন নির্ভরতা মোড়ানোর জন্য আপনি তৈরি অ্যাডাপ্টারে সুপারস করে লগ ইন করুন।
প্রথম কেসটি কোনও সমস্যা নয়, এটি কোডের পছন্দসই আচরণ। দ্বিতীয় পরিস্থিতিতে, যাইহোক, যদি সর্বত্র null
লাইব্রেরি অ্যাডাপ্টারের রিটার্ন মানটির সত্যই একটি ত্রুটি হয়, ব্যতিক্রম ছুঁড়ে ফেলার জন্য এপিআইকে পুনরায় ব্যবহার করা এবং এটির জন্য পরীক্ষার পরিবর্তে এটি ধরা null
খুব ভাল ধারণা হতে পারে (এবং কোড-ওয়াইজ সাধারণত হয়) ভাল ধারণা।
আমি ব্যক্তিগতভাবে কেবল প্রথম ক্ষেত্রে ব্যতিক্রমী দমন ব্যবহার করি। আমি কেবলমাত্র এটি দ্বিতীয় ক্ষেত্রে ব্যবহার করেছি, যখন আমাদের কাছে বাজেট না থাকলে বাকী প্রয়োগগুলি ব্যতিরেকে বাদ দিয়ে কাজ করতে হবে null
।