2012-09-11 16 views
5

व्यक्त मैं जावास्क्रिप्ट और नोड के लिए नया हूँ, और Node.js का उपयोग कर एक आवेदन बना सकते हैं और व्यक्त करने के लिए कोशिश कर रहे हैं।अपवाद हैंडलिंग और

मैं त्रुटियों के लिए उपयुक्त कॉलबैक डाल दिया है, लेकिन वे हर जगह डाल नहीं कर रहे हैं, और कभी कभी Node.js सर्वर बस कुछ अपवाद है कि में आता है की वजह से बंद हो जाता है।

यह सिफारिश की गई है 'नवोदय' या उपयोग करने के लिए 'हमेशा के लिए 'node.js हमेशा चलते रहें और इसे शुरू करें कि node.js बंद हो जाता है या नहीं।

यह एक्सप्रेस लिंक http://expressjs.com/guide.html#error-handling

app.use(function(err, req, res, next){ 
    console.error(err.stack); 
    res.send(500, 'Something broke!'); 
}); 

यह मेरे लिए अब काम कर रहा है से पालन करते हुए सभी अपवादों के लिए एक सब पकड़ प्रदान करता है लगता है। हालांकि मैंने कहीं पढ़ा है कि इस तरह की त्रुटि को पकड़ना अच्छा विचार नहीं है क्योंकि इसका दुष्प्रभाव हो सकता है और एक असंगत स्थिति में चर छोड़ सकता है? इस तरह के अपवाद को पकड़ना सभी मामलों के लिए काम नहीं करता है, और कुछ मामलों में हो सकता है जब सर्वर अभी भी कुछ अपवाद के लिए रुक सकता है। क्या यह सच है?

मेरे प्रश्न शायद यह हैं।

1) अपवाद ऊपर की तरह से निपटने के एक असंगत स्थिति में कुछ चर छोड़ सकते हैं कर सकते हैं? 2) क्या कुछ अपवाद हो सकते हैं जो अभी भी सर्वर को रोक देंगे?

धन्यवाद & सादर

ट्युको

+0

देखें: http://machadogj.com/2013/4/error-handling-in-nodejs.html – vsync

उत्तर

3

1) इस अपवाद हैंडलिंग विधि को असमरूप अवस्था में कुछ चर छोड़ सकते हैं क्या आपके कार्यान्वयन पर निर्भर करता है।

आप गुंजाइश विशेष अनुरोध करने के लिए सभी चर और कार्य करता है और पहुँच वैश्विक या वैश्विक एप्लिकेशन वस्तु की तरह उच्च चर न, आप ठीक हो जाएगा। कचरा कलेक्टर द्वारा अपवाद के बाद अप्रयुक्त स्मृति साफ हो जाती है।

2) हाँ, यह कुछ अपवाद सर्वर को रोकने के लिए संभव है। इसलिए आपको इस तरह की प्रक्रिया के लिए वैश्विक अपवाद हैंडलिंग हैंडलर सेट करना चाहिए: http://nodejs.org/api/process.html#process_event_uncaughtexception

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