जब भी मैं अगर एक पद्धति के लिए दिए गए मापदंडों अशक्त नहीं हैं की जाँच करने के लिए किया था, मैं अगर शून्य की जांच में विफल रहता है एक अशक्त चेक लिखने और एक IllegalArgumentException
फेंकने के लिए इस्तेमाल किया कुछ जावा 8 कक्षाएं जैसे कि ArrayList, मुझे पता चला कि ओरेकल Objects.requireNonNull का उपयोग कर शून्य मान के विरुद्ध पैरामीटर की जांच करने के लिए कर रहे हैं, और फिर, यदि परीक्षण विफल रहता है, तो NullPointerException
फेंक दिया जाता है।ऑब्जेक्ट्स। रिक्वेयर नॉननुल (टी ओबीजे) नल चेक के बदले और मैन्युअल रूप से अवैध अर्ग्यूमेंट एक्सेप्शन फेंक दिया?</p> <pre><code>if (user == null) { throw new IllegalArgumentException("User can't be null."); } </code></pre> <p>हालांकि, के स्रोत कोड को पढ़ कर:
इस तरह, पहले कोड स्निपेट इस दृष्टिकोण अपनाकर इस तरह दिखना चाहिए:
Objects.requireNonNull(user, "User can't be null.");
छोटे और अधिक पठनीय।
मान लिया जाये कि मैं, प्रणाली के पूरे अपवाद संचालन के नियंत्रण है (यहां तक कि कि मैं नहीं, कभी कभी यह व्यापार इन अनियंत्रित अपवाद को संभालने के लिए का हिस्सा है चाहिए), मैं अपने IllegalArgumentExceptions
NullPointerException
और उपयोग के साथ बदलना चाहिए Objects.requireNonNull
अपनी खुद की शून्य जांच और अपवाद फेंकने के बजाय?
हम नए कोड के लिए जेडीके में ऐसा कर रहे हैं, और पुराने कोड को व्यवस्थित रूप से अनुकूलित कर रहे हैं। और भविष्य में यह काफी संभव है कि जेवीएम अंततः ऑब्जेक्ट्स। रिक्वेयर नॉननुल को घुसपैठ कर देगा, जो इसे पसंद करने का एक और कारण है। "क्या मुझे एनपीई या आईएई का उपयोग करना चाहिए" बहस ज्यादातर राठोल है; दोनों स्थितियां रक्षात्मक हैं, और उनके बीच बहस करने का अधिकांश प्रयास बर्बाद हो गया है। –
जब ब्रायन गोएट्ज़ कहते हैं कि वह इसे एक तरह से कर रहा है, तो संभावना है कि आप इसे करना चाहते हैं ;-)। – Daniel
@BrianGoetz, इस तरह से जब मैं इन शून्य जांच विफल रहता हूं तो मैं 'NullPointerException' को अपनाना पसंद करूंगा। यहोशू ने अपनी किताब में 'आईएई' पर 'एनपीई' की प्राथमिकता पहले से ही कहा है, और जेडीके के भविष्य के बारे में आपने जो कहा है उसे पढ़कर, मुझे लगता है कि मेरे पास इस तरह से पर्याप्त सबूत हैं। वैसे, @OSryx उत्तर एक और प्रकार की पैरामीटर जांच को लागू करने के लिए मान्य है। –