2011-08-22 7 views
22

जब मैं जावास्क्रिप्ट के साथ सामान्य वेब अनुप्रयोग विकसित कर रहा हूं, तो try/catch कथन आमतौर पर आवश्यक नहीं है। जावास्क्रिप्ट में कोई checked exception, फ़ाइल IO या डेटाबेस कनेक्शन नहीं है।जावास्क्रिप्ट में कोशिश/पकड़ का उपयोग कब करना चाहिए?

try/catch विवरण जावास्क्रिप्ट में उपयोगी है? मैं इसका उपयोग कब कर सकता हूं?

+0

'जावास्क्रिप्ट में कोई फ़ाइल IO या डेटाबेस कनेक्शन नहीं है।' वास्तव में Node.js उनको समर्थन करता है, हालांकि आपको 'try/catch' का उपयोग करने की आवश्यकता नहीं है। – pimvdb

उत्तर

8

जब भी आप चल रहे कोड का उपयोग अपवाद फेंक सकते हैं इसका उपयोग करें। याद रखें कि आप अपनी खुद की त्रुटियों को throw कर सकते हैं - try…catch सामग्री का उपयोग मैं अपने स्वयं के अपवादों को पकड़ने के लिए करता हूं।

19

try...catch ब्लॉक आम तौर पर कम उपयोग करने के लिए प्रोत्साहित करते हैं, और यह आपके द्वारा उपयोग की जाने वाली भाषा पर निर्भर नहीं है।

इसका मुख्य कारण catch ब्लॉक की लागत है। इसके अलावा एक और कारण यह है कि, जब आप ब्लॉक में एक try...catch ब्लॉक के साथ कई कथन लपेटते हैं, तो आप यह सुनिश्चित नहीं कर सकते कि वास्तव में मुख्य समस्या क्या थी।

अपवाद (त्रुटि) होने की संभावना को कम करने के लिए validation या if...else ब्लॉक जैसी तकनीकों का उपयोग करना बेहतर है। उदाहरण के लिए, जब आप एक संख्या है जो बजाय try...catch का उपयोग कर के, उपयोगकर्ता से लिया जाता है के साथ काम करना चाहते हैं, तो आप उपयोग कर सकते हैं:

if (isNaN(numberVariable)) 
{ 
    alert('you should enter a valid number'); 
} 
4

बाहरी जावास्क्रिप्ट पुस्तकालयों और विगेट्स अक्सर इन्स्टेन्शियशन त्रुटियों के लिए अपवाद का उपयोग करें। यह करने की जरूरत है आम है:

try { 
    var w = new Widget(); 
} 
catch (e) { 
    // widget failed 
} 
1

ठीक है, मैं व्यक्तिगत रूप से (गलत?), इसका इस्तेमाल जब मैं कुछ कोड है जो मुझे ठीक से निष्पादित करेंगे यकीन नहीं लिखना है, लेकिन उपयोगकर्ता के बारे में पता करने की जरूरत नहीं त्रुटि।

उसके अलावा, मैं, कुछ उपयोगकर्ता नियंत्रण पर इसे का उपयोग किया गया है जो आप अपने HTML मार्कअप में एक 'कार्रवाई' संपत्ति को परिभाषित कर सकते हैं, और जावास्क्रिप्ट कि कार्रवाई को क्रियान्वित करने की कोशिश करेंगे, इस तरह:

try{ 
    window['method'](args); 
}catch(e){ 
    try{ 
     window['optionalExceptionHandler'](e, args); 
    }catch(e){ return; } 
} 

13

एक परिदृश्य मैं कोशिश/पकड़/अंत में उपयोगी गहरा नेस्टेड वस्तुओं के लिए जहां एक अशक्त किसी भी स्तर पर पॉप अप कर सकते हैं के साथ है (मैं इसे eval() xD से बेहतर सोचना पसंद)। उदाहरण के लिए, इस पर विचार करें:

var something = one.two.three.four.five; 

इस 100% सुरक्षा के साथ "प्राप्त" प्रदर्शन करने के लिए एक वर्बोज़ कोड का एक सा लिखने के लिए होगा:

if(one && one.two && one.two.three && one.two.three.four) 
    something = one.two.three.four.five; 

अब कल्पना चर नाम यथार्थवादी और लंबे समय तक रहे और अगर आप कथन के तुरंत बाद एक बहुत बदसूरत कोड मिलता है।

मैं कोशिश/पकड़/अंत में यह आसान बनाने के लिए जब मैं किसी भी "और" परिदृश्यों के बारे में परवाह नहीं है और सिर्फ वस्तु या नहीं चाहते का उपयोग करते हैं:

var something; 
try { something = one.two.three.four.five; } 
catch { something = "default"; } 
finally { doSomething(something); } 
13

मैं एक post here से इस पाया:

आपको कब प्रयास करना चाहिए?

कोशिश पकड़ बयान किसी भी समय आप उपयोगकर्ता, या किसी भी समय आप अपने उपयोगकर्ताओं के लाभ के लिए कस्टम त्रुटियां उत्पन्न करना चाहते से त्रुटियों को छिपाना चाहते हैं इस्तेमाल किया जाना चाहिए। यदि आपने इसे अभी तक नहीं समझा है, जब आप एक प्रयास-पकड़ विवरण निष्पादित करते हैं, तो ब्राउज़र की सामान्य त्रुटि प्रबंधन तंत्र अक्षम कर दी जाएगी।

बड़े अनुप्रयोगों के निर्माण के दौरान आप शायद इसके संभावित लाभ देख सकते हैं। किसी भी आवेदन के प्रवाह में हर संभव परिस्थिति को डिबग करना अक्सर समय लेने वाला होता है, और कई संभावनाओं को अनजाने में अनदेखा किया जा सकता है। बेशक, उचित बग परीक्षण के साथ, किसी भी क्षेत्र को अनदेखा नहीं किया जाना चाहिए। लेकिन कोशिश-पकड़ कथन आपके कोड के उन क्षेत्रों में एक अच्छा फॉलबैक के रूप में काम करता है जो असामान्य परिस्थितियों में विफल हो सकता है जो विकास के दौरान पूर्ववत नहीं थे।

कोशिश-पकड़ विवरण द्वारा प्रदान किया गया एक और लाभ यह है कि यह उन उपयोगकर्ताओं से अत्यधिक तकनीकी त्रुटि संदेशों को छुपाता है जो उन्हें किसी भी तरह समझ नहीं पाएंगे।

कोशिश-पकड़ का उपयोग करने का सबसे अच्छा समय आपके कोड के भाग में है जहां आपको संदेह है कि त्रुटियां आपके नियंत्रण से बाहर हो सकती हैं, जो भी कारणों से हैं।

कब प्रयास करना चाहिए?

आप कोशिश पकड़ कथन का उपयोग नहीं करना चाहिए यदि आप जानते हैं एक त्रुटि होने के लिये, क्योंकि इस मामले में आप इसे मुखौटा नहीं, समस्या डिबग करने के लिए चाहते हो जाएगा जा रहा है। प्रयास-पकड़ विवरण केवल कोड के उन अनुभागों पर निष्पादित किया जाना चाहिए जहां आपको संदेह हो सकता है कि त्रुटियां हो सकती हैं, और संभावित परिस्थितियों की भारी संख्या के कारण, आप पूरी तरह सत्यापित नहीं कर सकते हैं कि कोई त्रुटि होगी या यह कब होगा। बाद के मामले में, कोशिश-पकड़ का उपयोग करना उचित होगा।

संबंधित मुद्दे