আমি প্রথমে আপনাকে একটি উদাহরণ দেব (তবে একেবারে শেষের দিকে উত্তর কেন বিতর্ক)।
চলুন আপনি সুপারিশ করুন আপনি একটি জাভা-ভিত্তিক দলিল সম্পাদকে একটি দস্তাবেজ সম্পাদনা করছেন এবং আপনার কাজ শেষ হওয়ার পরে আপনি ফাইল-> হিসাবে সংরক্ষণ করুন ... নির্বাচন করুন এবং আপনি নথিকে একটি ভলিউমে সংরক্ষণ করতে বেছে নিয়েছেন যাতে আপনার লেখার অনুমতি নেই। সম্পাদক আপনাকে কুৎসিত স্ট্যাকট্রেস দিয়ে ক্রাশ করবে না, এটি কেবল আপনাকে বলবে যে এটি ফাইলটি সংরক্ষণ করতে পারে না এবং এটি আপনাকে সম্পাদনা চালিয়ে যেতে এবং / অথবা অন্য কোনও জায়গায় সংরক্ষণ করতে দেয়।
এই ক্ষেত্রে সম্ভবত এটি একটি চেক করা ব্যতিক্রম প্রত্যাশিত ছিল, ধরা পড়েছিল এবং এ থেকে দয়া করে পুনরুদ্ধার করার জন্য কাজ করেছিল।
অন্যদিকে এগুলি শূন্য দ্বারা বিভাজন বা কোনও প্রোগ্রামিং ত্রুটির কারণে নাল পয়েন্টার ব্যতিক্রম ঘটে যা কেবলমাত্র কিছু শর্তে তার কুশল মাথাটি পুনর্বার করে। কোডের যে কোনও জায়গায় এটি ঘটতে পারে, র্যাম দূষিত হতে পারে ইত্যাদি। কোনও এপিআই ডক আপনাকে "এই পদ্ধতিটি শূন্য দ্বারা বিভাজন করতে পারলে শূন্যের দ্বারা ভাগ করে দেবে" বলে না ।
চেক করা ব্যতিক্রমগুলি ডিজাইনের অংশ হওয়া উচিত এবং সেই API এর ব্যবহারকারীদের সেগুলি হ্যান্ডেল করার জন্য প্রস্তুত করা উচিত। চেক করা ব্যতিক্রমগুলি প্রায় সর্বত্রই ঘটতে পারে এবং আমাদের নিয়ন্ত্রণের বাইরে।
যখন পরীক্ষা করা ব্যতিক্রমগুলি ব্যবহার করা উচিত তখন প্রোগ্রামাররা চেক না করা ব্যতিক্রম (রানটাইম এক্সেক্সশন থেকে প্রসারিত) ব্যবহার করে বিতর্ক দেখা দেয় :
- সংক্ষিপ্ত হিসাবে সংকলক বিরক্ত না করা হিসাবে একটি শর্টকাট
- তাদের স্বাক্ষরগুলি সহজ দেখায়
- কারণ তারা বিবেচনা করে যে পরীক্ষিত ব্যতিক্রমগুলি নির্ভরশীলতার সমস্যা (যদি আপনি একটি বাস্তবায়নকারী শ্রেণিতে একটি নতুন চেক করা ব্যতিক্রমগুলি ফেলে দেন তবে আপনার ইন্টারফেসের স্বাক্ষরটি সংশোধন করা উচিত) এবং বিপরীত।