एक व्यक्तिपरक प्रश्न के रूप में इसे बंद किया जाना चाहिए, लेकिन जैसा कि यह अभी भी खुला है:
यह मेरे रोजगार के पिछले स्थान पर इस्तेमाल की जाने वाली आंतरिक नीति का हिस्सा है और इसने वास्तव में अच्छा काम किया है। यह सब स्मृति से है इसलिए मैं सटीक शब्द याद नहीं रख सकता। यह ध्यान देने योग्य है कि उन्होंने चेक किए गए अपवादों का उपयोग नहीं किया, लेकिन यह प्रश्न के दायरे से परे है। अनियंत्रित अपवादों का उपयोग उन्होंने 3 मुख्य श्रेणियों में किया।
NullPointerException: जानबूझकर न फेंके। NPE को केवल VM द्वारा फेंका जाना है, जब एक अशक्त संदर्भ को dereferencing करते हैं। यह सुनिश्चित करने के लिए सभी संभव प्रयास किए जाते हैं कि इन्हें कभी फेंका न जाए। इन त्रुटियों को खोजने के लिए कोड विश्लेषण उपकरण के साथ संयोजन में @Nullable और @NotNull का उपयोग किया जाना चाहिए।
IllegalArgumentException: जब किसी फ़ंक्शन का तर्क सार्वजनिक दस्तावेज़ के अनुरूप नहीं होता है, तो उसे फेंक दें, ताकि त्रुटि की पहचान की जा सके और पास किए गए तर्कों के संदर्भ में वर्णन किया जा सके। ओपी की स्थिति इस श्रेणी में आ जाएगी।
IllegalStateException: जब किसी फ़ंक्शन को कॉल किया जाता है, तो फेंका जाता है और इसके तर्क या तो उस समय अनपेक्षित होते हैं, जब वे पास होते हैं या ऑब्जेक्ट की स्थिति के साथ असंगत होते हैं, जिस विधि का एक सदस्य होता है।
उदाहरण के लिए, जिन चीजों की लंबाई थी, उनमें IndexOutOfBoundsException के दो आंतरिक संस्करण थे। यदि कोई अनुक्रमणिका लंबाई से बड़ी थी, तो उसका उपयोग अवैध श्रेणी के एक उप-वर्ग में किया जाता है। यदि सूचकांक नकारात्मक था, तो अन्य गैरकानूनी तरीके से अवैध तरीके से इस्तेमाल किया जा सकता है। ऐसा इसलिए था क्योंकि आप ऑब्जेक्ट में अधिक आइटम जोड़ सकते हैं और तर्क मान्य होगा, जबकि एक नकारात्मक संख्या कभी मान्य नहीं होती है।
जैसा कि मैंने कहा, यह प्रणाली वास्तव में अच्छी तरह से काम करती है, और यह किसी को यह समझाने के लिए ले गई कि भेद क्यों है: "त्रुटि के प्रकार के आधार पर यह आपके लिए काफी सीधा है कि आपको क्या करना है। यहां तक कि अगर आप वास्तव में आंकड़ा नहीं कर सकते हैं। क्या गलत हुआ, आप यह पता लगा सकते हैं कि उस त्रुटि को पकड़ने के लिए और अतिरिक्त डिबगिंग जानकारी कहां से बनाई जाए। "
NullPointerException: Null केस को हैंडल करें या एक जोर में डालें ताकि NPE फेंके नहीं। यदि आप एक जोर में डाल दो अन्य प्रकारों में से सिर्फ एक है। यदि संभव हो, तो डीबग करना जारी रखें जैसे कि दावा पहले स्थान पर था।
IllegalArgumentException: आपकी कॉल साइट पर कुछ गलत है। यदि पास किए जा रहे मान किसी अन्य फ़ंक्शन से हैं, तो पता करें कि आपको गलत मान क्यों मिल रहा है। यदि आप अपने किसी तर्क में गुजर रहे हैं तो कॉल स्टैक तक त्रुटि जांच का प्रचार करें जब तक कि आपको वह फ़ंक्शन न मिल जाए जो आपको उम्मीद नहीं है।
IllegalStateException: आपने अपने कार्यों को सही क्रम में नहीं बुलाया है। यदि आप अपने किसी तर्क का उपयोग कर रहे हैं, तो उन्हें जाँचें और समस्या का वर्णन करते हुए एक IllegalArgumentException को फेंक दें। आप तब तक स्टेक के खिलाफ गाल को प्रचारित कर सकते हैं जब तक कि आप समस्या का पता नहीं लगाते।
वैसे भी, उनका कहना यह था कि आप केवल ढेर की नकल कर सकते हैं। आपके पास IllegalStateException या NullPointerException को स्टैक तक प्रचारित करने का कोई तरीका नहीं है क्योंकि उनके पास आपके फ़ंक्शन के साथ कुछ करना था।