मैं समस्याओं को जल्द पकड़ने के लिए अपवादों का उपयोग करता हूं। उदाहरण के लिए:
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
पैरामीटर के रूप में एक संदर्भ केवल एक उदाहरण है। अमान्य तर्कों से लेकर किसी भी चीज़ में कई तरह की समस्याएं हो सकती हैं। हमेशा उन्हें जल्दी स्पॉट करना बेहतर होता है।
तो मेरा सवाल बस यह है: क्या यह अच्छा अभ्यास है? समस्या निवारण उपकरण के रूप में अपवादों का मेरा उपयोग अच्छा है? क्या यह अपवादों का एक वैध अनुप्रयोग है या यह समस्याग्रस्त है?