जावास्क्रिप्ट में सबसे आम रणनीति रक्षात्मक रूप से लिखना और अच्छी तरह से परीक्षण करना है।
उदा।
var element;
if (document && document.getElementById) {
element = document.getElementById('foo');
}
if (element) {
// use element
}
लेकिन isHostMethod तरह परीक्षण के साथ एक अधिक सामान्य प्रारूप में लिखा: वहाँ पुस्तकालयों के समान परीक्षण के साथ एक वर्ग में शुरू कर रहे हैं।
नियोजित प्रयास करें ... केवल अंतिम उपाय के रूप में देखें जहां सुविधा का पता लगाना या अन्य सुरक्षा उपलब्ध नहीं है। मेजबान होस्ट ऑब्जेक्ट्स कभी-कभी बेकार परिणाम देता है या यहां तक कि त्रुटियों को भी फेंक सकता है (उदाहरण के लिए सभी XMLHttpRequest स्क्रिप्ट्स का प्रयास करें..चैच का उपयोग करें क्योंकि आईई में समर्थन के लिए परीक्षण अनिवार्य है, इसलिए केवल एक ही विकल्प यह है कि इसे कॉल करें और देखें कि क्या होता है)।
माइनर स्क्रिप्ट त्रुटियों में कोई समस्या नहीं है क्योंकि अधिकतर ब्राउज़र उन्हें डिफ़ॉल्ट रूप से नहीं दिखाएंगे। अधिकांश गैर-तुच्छ पृष्ठ ब्राउज़र, सेटिंग्स और उपयोगकर्ता के नेटवर्क वातावरण जैसी चीज़ों के आधार पर हर समय त्रुटियों को फेंक देते हैं (एसओ सहित)। उपयोगकर्ताओं को केवल कार्यक्षमता से वंचित कर दिया गया है कि वे जानते हैं कि वे गायब हैं (और वास्तव में इससे लाभ हो सकते हैं)। इसलिए एक सामान्य रणनीति है कि हम किसी भी स्क्रिप्ट के बिना पृष्ठ को कार्यात्मक बनाते हैं, फिर प्रयोज्यता बढ़ाने के लिए स्क्रिप्ट सुविधाओं को जोड़ें। यदि कोई त्रुटि होती है जो पृष्ठ को उपयोगी होने से रोकती है तो इस तरह बुनियादी कार्यक्षमता में हमेशा गिरावट आती है।
यह रणनीति हमेशा संभव नहीं हो सकती है, लेकिन यह एक अच्छा प्रारंभिक बिंदु है और इसे हल्के से नहीं छोड़ा जाना चाहिए।
मान लीजिए कि आपने प्रत्येक ब्लॉक को कोशिश/पकड़ में लपेट लिया है: वास्तव में अपवादों के साथ आपका कैच ब्लॉक क्या करेगा? – nnnnnn
@nnnnn पूरी स्क्रिप्ट को दुर्घटनाग्रस्त नहीं होने से बचने के लिए पर्याप्त उपयोगी होगा? मुझे पकड़ने वाले ब्लॉक के साथ jQuery UI 'कोड में कुछ पकड़ने वाले ब्लॉक देखने की कोशिश है, तो मुझे लगता है कि यह सभी कोड लपेटने का एक उद्देश्य है? –
मेरा मुद्दा यह है कि अपवाद के बाद क्या होगा या क्या होना चाहिए और तदनुसार कोड करना सुनिश्चित करें। "पूरी लिपि को दुर्घटनाग्रस्त करने से बचें" वास्तव में मदद नहीं करता है अगर पहली छमाही में अपवाद होता है लेकिन दूसरा आधा पहले छमाही से वैध परिणामों के बिना काम नहीं करेगा। और कुछ अपवादों को पहले स्थान पर सही ढंग से कोडिंग से पूरी तरह से बचाया जा सकता है - मैं यह नहीं कह रहा हूं कि आप ऐसा करेंगे, लेकिन मैंने बहुत सारे कोड देखे हैं जहां लेखक ने डोडी कोड लिखा था और फिर इसे खाली पकड़ने के प्रयास में लपेट लिया था उपयोगकर्ता को टालने योग्य त्रुटियों को देखने से बचने के लिए बस ब्लॉक करें। – nnnnnn