2015-01-06 48 views
5

有人可以在時間闡述時很快速的Node.js應用適當拋出一個錯誤,像這樣:Node.js的使用Express - 拋出錯誤VS未來(錯誤)

throw new Error('my error'); 

或通過這通過通常標有「下一個」像這樣的回調出錯ON:

next(error); 

,你可以請解釋一下他們每個人都會在一個Express應用程序的情況下怎麼辦?

例如,這裏有一個明確的功能處理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')」,但究竟會做什麼?爲什麼通常將錯誤傳遞給next'回調'會更好?

另一個問題是 - 如何在拋出控制檯和瀏覽器時顯示新錯誤('xyz')「?

回答

4

通常,表達式遵循傳遞錯誤而不是拋出它的方式,對於程序中的任何錯誤,您都可以將錯誤對象傳遞給'next',同時還需要定義一個錯誤處理程序,以便將所有錯誤傳遞給接下來可以妥善處理

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

相關問題