मुझे बताया गया है कि जावा कोशिश-पकड़ तंत्र का उपयोग करने में कुछ ओवरहेड है। इसलिए, संभावित अपवाद को संभालने के लिए प्रयास ब्लॉक के भीतर चेक अपवाद को फेंकने के तरीकों को रखना जरूरी है, लेकिन प्रयासों को केवल उन परिचालनों को शामिल करने के लिए प्रयास करें जो कि अपवाद फेंक सकते हैं।जावा को जितना संभव हो उतना कसकर ब्लॉक करने की कोशिश करनी चाहिए?
मुझे यकीन नहीं है कि यह एक समझदार निष्कर्ष है।
किसी फ़ंक्शन के नीचे दो कार्यान्वयन पर विचार करें जो निर्दिष्ट टेक्स्ट फ़ाइल को संसाधित करता है।
भले ही यह सच है कि पहला व्यक्ति कुछ अनावश्यक ओवरहेड लेता है, मुझे इसका पालन करना बहुत आसान लगता है। यह स्पष्ट नहीं है कि बिल्कुल अपवाद केवल बयानों को देखने से ही आते हैं, लेकिन टिप्पणियां स्पष्ट रूप से दिखाती हैं कि कौन से बयान जिम्मेदार हैं।
दूसरा दूसरा पहले से कहीं अधिक जटिल और जटिल है। विशेष रूप से, पहले की अच्छी लाइन-रीडिंग मुहावरे को readLine
को एक कोशिश ब्लॉक में कॉल करने के लिए उलझाया जाना चाहिए।
एक funcion में अपवादों को संभालने के लिए सबसे अच्छा अभ्यास क्या है जहां इसकी परिभाषा में कई अपवाद फेंक दिए जा सकते हैं?
यह एक शामिल कोशिश ब्लॉक के भीतर सभी प्रसंस्करण कोड:
void processFile(File f)
{
try
{
// construction of FileReader can throw FileNotFoundException
BufferedReader in = new BufferedReader(new FileReader(f));
// call of readLine can throw IOException
String line;
while ((line = in.readLine()) != null)
{
process(line);
}
}
catch (FileNotFoundException ex)
{
handle(ex);
}
catch (IOException ex)
{
handle(ex);
}
}
यह एक ही तरीके कि कोशिश ब्लॉक के भीतर अपवाद फेंक शामिल हैं:
void processFile(File f)
{
FileReader reader;
try
{
reader = new FileReader(f);
}
catch (FileNotFoundException ex)
{
handle(ex);
return;
}
BufferedReader in = new BufferedReader(reader);
String line;
while (true)
{
try
{
line = in.readLine();
}
catch (IOException ex)
{
handle(ex);
break;
}
if (line == null)
{
break;
}
process(line);
}
}
"समयपूर्व अनुकूलन" एक ऐसी स्थिति का वर्णन करने के लिए प्रयोग किया जाता है जहां एक प्रोग्रामर प्रदर्शन विचारों को कोड के टुकड़े के डिजाइन को प्रभावित करता है। इसका परिणाम ऐसे डिज़ाइन में हो सकता है जो उतना स्वच्छ नहीं हो सकता है जितना कि यह गलत हो या कोड गलत हो, क्योंकि कोड अनुकूलन द्वारा जटिल है और प्रोग्रामर अनुकूलन से विचलित है। - विकिपीडिया [http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize] –
"हमें छोटी क्षमता के बारे में भूल जाना चाहिए, समय के बारे में 9 7% कहें: समयपूर्व अनुकूलन सभी बुराइयों की जड़ है। फिर भी हमें पास नहीं करना चाहिए उस महत्वपूर्ण 3% में हमारे अवसरों को ऊपर उठाएं। " - Knuth [http://stackoverflow.com/questions/211414/is-premature-optimization-really-the-root-of-all-evil] –