আমি তাড়াতাড়ি সমস্যাগুলি ধরতে ব্যতিক্রমগুলি ব্যবহার করি। উদাহরণ স্বরূপ:
public int getAverageAge(Person p1, Person p2){
if(p1 == null || p2 == null)
throw new IllegalArgumentException("One or more of input persons is null").
return (p1.getAge() + p2.getAge()) / 2;
}
আমার প্রোগ্রামটি nullএই ফাংশনে কখনই পাস করা উচিত নয় । আমি কখনই এর উদ্দেশ্য করি না। তবে আমরা সবাই জানি, প্রোগ্রামিংয়ে অযৌক্তিক স্টাফ হয়।
যদি সমস্যাটি দেখা দেয় তবে একটি ব্যতিক্রম ছুঁড়ে ফেলার ফলে প্রোগ্রামের অন্যান্য জায়গাগুলিতে আরও সমস্যা হওয়ার আগে, আমাকে এটি স্পট এবং ঠিক করার অনুমতি দেয়। ব্যতিক্রমটি প্রোগ্রামটি থামিয়ে দেয় এবং আমাকে বলে "এখানে খারাপ জিনিস ঘটেছিল, এটি ঠিক করুন"। এর পরিবর্তে nullপ্রোগ্রামের আশেপাশে অন্যত্র সমস্যা তৈরি হচ্ছে।
এখন, আপনি ঠিক বলেছেন, এক্ষেত্রে nullএটি কেবলমাত্র NullPointerExceptionঠিক তখনই ঘটায় , তাই এটি সর্বোত্তম উদাহরণ নাও হতে পারে।
তবে উদাহরণ হিসাবে উদাহরণস্বরূপ এমন একটি পদ্ধতি বিবেচনা করুন:
public void registerPerson(Person person){
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
এই ক্ষেত্রে, nullপরামিতি হিসাবে একটি প্রোগ্রামের চারপাশে পাস করা হবে এবং অনেক পরে ত্রুটি হতে পারে, যা তাদের উত্সটিতে ফিরে পাওয়া শক্ত হবে।
ফাংশনটি এর মতো পরিবর্তন করা:
public void registerPerson(Person person){
if(person == null) throw new IllegalArgumentException("Input person is null.");
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
সমস্যাটি অন্যান্য জায়গায় অদ্ভুত ত্রুটির কারণ হওয়ার আগে আমাকে অনেক বেশি সমস্যা চিহ্নিত করার অনুমতি দেয়।
এছাড়াও, nullপ্যারামিটার হিসাবে একটি রেফারেন্স কেবল একটি উদাহরণ। এটি বিভিন্ন ধরণের সমস্যা হতে পারে, অবৈধ যুক্তি থেকে শুরু করে অন্য যে কোনও কিছুতে। তাদের তাড়াতাড়ি স্পষ্ট করা ভাল better
সুতরাং আমার প্রশ্নটি সহজভাবে: এটি কি ভাল অনুশীলন? সমস্যা-প্রতিরোধকারী সরঞ্জাম হিসাবে আমার ব্যতিক্রমগুলি কী ভাল? এটি কি ব্যতিক্রমগুলির বৈধ প্রয়োগ বা সমস্যাযুক্ত?