2015-01-06 13 views
5

कोई जब यह इसलिए की तरह एक त्रुटि फेंक करने के लिए एक Node.js एक्सप्रेस ऐप्लिकेशन में उपयुक्त है समय पर व्याख्या कर सकते हैं:Node.js - बनाम अगले (त्रुटि) त्रुटि फेंक

throw new Error('my error'); 

या इस पारित करने के लिए कॉलबैक आमतौर पर इतना की तरह 'अगले' लेबल के माध्यम से पर त्रुटि:

next(error); 

और आप कृपया समझा सकता है क्या उनमें से प्रत्येक एक एक्सप्रेस एप्लिकेशन के संदर्भ में क्या करेंगे?

उदाहरण के लिए

, यहाँ एक एक्सप्रेस URL पैरामीटर के साथ काम समारोह है: "// मैं यहाँ अपने ही त्रुटि बनाना चाहिए"

app.param('lineup_id', function (req, res, next, lineup_id) { 
     // typically we might sanity check that user_id is of the right format 
     if (lineup_id == null) { 
      console.log('null lineup_id'); 
      req.lineup = null; 
      return next(new Error("lineup_id is null")); 
     } 

     var user_id = app.getMainUser()._id; 
     var Lineup = app.mongooseModels.LineupModel.getNewLineup(app.system_db(), user_id); 
     Lineup.findById(lineup_id, function (err, lineup) { 
      if (err) { 
       return next(err); 
      } 
      if (!lineup) { 
       console.log('no lineup matched'); 
       return next(new Error("no lineup matched")); 
      } 
      req.lineup = lineup; 
      return next(); 
     }); 
    }); 

लाइन टिप्पणी की में मैं "नई त्रुटि फेंक सकता हूं ('xyz')", लेकिन यह वास्तव में क्या करेगा? कॉलबैक 'अगली' में त्रुटि को पारित करना आम तौर पर क्यों बेहतर होता है?

एक और सवाल यह है कि - जब मैं विकास में हूं तो कंसोल में और ब्राउजर में दिखाने के लिए "नई त्रुटि ('xyz')" कैसे फेंक सकता हूं?

उत्तर

4

सामान्य एक्सप्रेस में इसे फेंकने के बजाए त्रुटियों को पारित करने के तरीके का पालन करता है, प्रोग्राम में किसी भी त्रुटि के लिए आप त्रुटि ऑब्जेक्ट को 'अगली' तक पारित कर सकते हैं, एक त्रुटि हैंडलर को परिभाषित करने की आवश्यकता है ताकि सभी त्रुटियां पास हो जाएं अगले को ठीक से संभाला जा सकता है

http://expressjs.com/guide/error-handling.html

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