@ ब्रैड टटरो
पहले मामले में अपवाद खो नहीं जा रहा है, इसे कन्स्ट्रक्टर में पास किया जा रहा है। हालांकि मैं बाकी के साथ आपसे सहमत हूं, दूसरा दृष्टिकोण स्टैक ट्रेस के नुकसान की वजह से एक बहुत बुरा विचार है। जब मैंने .NET के साथ काम किया, तो मैंने कई मामलों में भाग लिया जहां अन्य प्रोग्रामर ने ऐसा किया, और जब मुझे अपवाद के सही कारण को देखने की ज़रूरत होती, तो मुझे किसी भी अंत तक निराशा होती है, केवल इसे एक विशाल प्रयास ब्लॉक से पुनर्स्थापित करने के लिए अब मुझे पता नहीं है कि समस्या कहां उत्पन्न हुई थी।
मैं ब्रैड की दूसरी टिप्पणी भी करता हूं कि आपको प्रदर्शन के बारे में चिंता नहीं करनी चाहिए। इस प्रकार का माइक्रो ऑप्टिमाइज़ेशन एक हार्दिक विचार है। जब तक आप लंबे समय तक चल रहे लूप के प्रत्येक पुनरावृत्ति में अपवाद फेंकने के बारे में बात नहीं कर रहे हैं, तो आप अपने अपवाद उपयोग के माध्यम से प्रदर्शन समस्याओं में भाग लेने की संभावना से अधिक नहीं होंगे।
हमेशा मेट्रिक्स होने पर प्रदर्शन को अनुकूलित करें जो आपको इंगित करता है कि आपको प्रदर्शन को अनुकूलित करने की आवश्यकता है, और फिर उन स्पॉट्स को दबाएं जो अपराधी साबित हुए हैं।
आसान डिबगिंग क्षमताओं के साथ पठनीय कोड होना बेहतर है (आईई स्टैण्ड ट्रेस छुपा नहीं रहा है) कुछ नैनोसेकंद को तेजी से चलाने के बजाए।
कस्टम अपवाद में अपवाद लपेटने के बारे में एक अंतिम नोट ... यह एक बहुत ही उपयोगी निर्माण हो सकता है, खासकर जब यूआई से निपटना। आप प्रत्येक ज्ञात और उचित असाधारण मामले को कुछ आधार कस्टम अपवाद (या जो आधार आधार अपवाद से विस्तारित करता है) में लपेट सकते हैं, और फिर यूआई केवल इस आधार अपवाद को पकड़ सकता है। पकड़े जाने पर, अपवाद को उपयोगकर्ता को जानकारी प्रदर्शित करने के साधन प्रदान करने की आवश्यकता होगी, एक पठनीय संदेश संपत्ति, या उन पंक्तियों के साथ कुछ कहें। इस प्रकार, जब भी यूआई अपवाद को याद करता है, तो यह एक बग के कारण होता है जिसे आपको ठीक करने की आवश्यकता होती है, और जब भी यह अपवाद पकड़ लेता है, तो यह एक ज्ञात त्रुटि स्थिति है जिसे यूआई द्वारा ठीक से संभाला जा सकता है और इसे संभाला जाना चाहिए।