वहाँ एक ट्राई/कैच ब्लॉक का उपयोग करने के लिए जावा में किसी भी भूमि के ऊपर, के रूप में एक करने का विरोध किया है, तो ब्लॉक (यह सोचते हैं कि संलग्न कोड अन्यथा इतना अनुरोध नहीं करता)?जावा अगर बनाम कोशिश/पकड़ भूमि के ऊपर
public String tryTrim(String raw) {
try {
return raw.trim();
} catch (Exception e) {
}
return null;
}
public String ifTrim(String raw) {
if (raw == null) {
return null;
}
return raw.trim();
}
raw
इनपुट केवल शायद ही कभी null
है, तो वहाँ दो तरीकों के बीच किसी भी प्रदर्शन अंतर है:
उदाहरण के लिए, तार के लिए एक "सुरक्षित ट्रिम" विधि के निम्नलिखित दो सरल कार्यान्वयन ले ?
इसके अलावा, यह एक अच्छा प्रोग्रामिंग पैटर्न कोड के लेआउट को सरल बनाने के लिए tryTrim()
दृष्टिकोण का उपयोग करने, विशेष रूप से जब कई ब्लॉक दुर्लभ त्रुटि की स्थिति की जाँच एक आज़माएं/कैच ब्लॉक में कोड बंद करके बचा जा सकता है ?
उदाहरण के लिए, यह एक आम मामला है N parameters
के साथ एक विधि है, जो अपने शुरू के निकट उनमें से M <= N
का उपयोग करता है, जल्दी और निर्धारणात्मक में नाकाम रहने के "अवैध" (जैसे, एक शून्य या खाली स्ट्रिंग) अगर किसी भी तरह के पैरामीटर है है, शेष कोड को प्रभावित किए बिना।
ऐसे मामलों में, बजाय k * M
लिखने के लिए होने का अगर ब्लॉक, एक ट्राई/कैच ब्लॉक काफी छोटा है (जहां k
पैरामीटर प्रति चेकों की औसत संख्या, जैसे शून्य या खाली स्ट्रिंग के लिए k = 2
है) कोड और एक 1-2 पंक्ति टिप्पणी का उपयोग "अपरंपरागत" तर्क को स्पष्ट रूप से नोट करने के लिए किया जा सकता है।
इस तरह का एक पैटर्न विधि को भी तेज करेगा, विशेष रूप से यदि त्रुटि की स्थिति शायद ही कभी होती है, और यह प्रोग्राम सुरक्षा समझौता किए बिना ऐसा करेगी (मान लीजिए कि त्रुटि की स्थिति "सामान्य" है, उदाहरण के लिए एक स्ट्रिंग प्रोसेसिंग विधि में शून्य या खाली मान स्वीकार्य हैं, यद्यपि शायद ही कभी उपस्थिति में)।
सही और, जैसा सर्गेई का जवाब इंगित करता है, अपवाद कभी नहीं फेंक दिया गया है, भले ही अधिक ओवरहेड हो। धन्यवाद! – PNS
@PNS सच नहीं है, सर्जी सिर्फ यह माप नहीं रही है कि आप और सर्गी को लगता है कि वह क्या माप रहा है (ओह मुझे वह वाक्य पसंद है, माफ करना विरोध नहीं कर सकता;))। यदि आप कैच ब्लॉक में अपवाद नहीं लेते हैं तो कोई ओवरहेड नहीं है। लेकिन फिर जेआईटी द्वारा एक नलपोइंटर चेक आम तौर पर नि: शुल्क है (स्पष्ट जांच न करें और इसके बजाय एचडब्ल्यू अपवाद को पकड़ें) ताकि यह इस बात पर निर्भर करता है कि जेआईटी इस स्थिति में अनुकूलन करने के लिए पर्याप्त बुद्धिमान है या नहीं। मामूली विचार नहीं, लेकिन वैसे भी अंतर चक्र चक्रों में मापा जाता है - बिल्कुल अनैच्छिक। – Voo
जब आपने अपना जोड़ा तो मैं उस टिप्पणी को संपादित कर रहा था। तो, क्या आपको लगता है कि कम से कम सूर्य जेडीके में कोई अपवाद नहीं है (या सिर्फ एक नलपॉन्टर अपवाद) फेंक दिया गया है? – PNS