2015-01-06 12 views
5

ktoś może wykładać na czasy, kiedy jest to właściwe w node.js ekspresowe aplikacji wyrzucić błąd tak:node.js z Express - rzucają błąd vs następnego (błąd)

throw new Error('my error'); 

lub przekazać to Błąd na pośrednictwem zwrotnego zwykle oznaczonego „obok” tak:

next(error); 

i może pan wyjaśnić, co każdy z nich będzie zrobić w kontekście aplikacji Express?

na przykład, tutaj jest wyraźna funkcja czynienia z parametrów URL: „// powinien utworzyć własną błąd tutaj”

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(); 
     }); 
    }); 

W linii skomentował Mogłem użyć "throw new Error ('xyz')", ale co dokładnie by to zrobiło? Dlaczego zwykle lepiej jest przekazać błąd do wywołania zwrotnego "dalej"?

Kolejne pytanie brzmi - w jaki sposób mogę uzyskać "nowy błąd (" xyz ")", aby pojawić się w konsoli, a także w przeglądarce, gdy jestem w fazie rozwoju?

Odpowiedz

4

Generalnie wyrażenie wyraża sposób przekazywania błędów, zamiast je wyrzucać, w przypadku błędów w programie można przekazać obiekt błędu do "następnego", należy również zdefiniować procedurę obsługi błędów, aby wszystkie błędy były przekazywane do następny może być obsługiwany prawidłowo

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

Powiązane problemy