2015-01-06 14 views
5

Ai đó có thể nói thêm về thời gian khi nó phù hợp trong một ứng dụng Node.js Express để ném ra một lỗi như vậy:Node.js với Express - ném Lỗi vs tiếp theo (lỗi)

throw new Error('my error'); 

hoặc chuyển thông tin này lỗi thông qua cuộc gọi lại thường được gắn nhãn 'tiếp theo' như vậy:

next(error); 

và bạn có thể giải thích điều mà mỗi người sẽ làm trong ngữ cảnh của ứng dụng Express?

ví dụ, đây là một chức năng nhanh đối phó với các thông số URL: "// tôi nên tạo lỗi riêng của tôi ở đây"

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

Trong dòng nhận xét Tôi có thể sử dụng "ném lỗi mới ('xyz')", nhưng chính xác điều đó sẽ làm gì? Tại sao nó thường tốt hơn để vượt qua lỗi để gọi lại 'tiếp theo'?

Một câu hỏi khác là - làm thế nào để tôi nhận được "ném lỗi mới ('xyz')" để hiển thị trong bảng điều khiển cũng như trình duyệt khi tôi đang phát triển?

Trả lời

4

Nói chung theo cách vượt qua lỗi thay vì ném, vì bất kỳ lỗi nào trong chương trình bạn có thể chuyển đối tượng lỗi sang 'tiếp theo', cũng cần phải xác định trình xử lý lỗi để tất cả các lỗi được chuyển đến tiếp theo có thể được xử lý đúng cách

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

Các vấn đề liên quan