2012-09-11 31 views
5

Tôi mới sử dụng javascript và nút và đã cố gắng tạo một ứng dụng bằng cách sử dụng node.js và express.xử lý ngoại lệ trong node.js và thể hiện

Tôi đã đưa callbacks thích hợp cho các lỗi nhưng họ không đặt ở khắp mọi nơi, và đôi khi Node.js máy chủ chỉ dừng lại vì một số ngoại lệ mà đi theo.

Nó đã được khuyến khích sử dụng 'mới nổi' hoặc 'mãi mãi 'để giữ cho node.js luôn chạy và khởi động nó cho dù node.js dừng lại.

Dường nhanh cung cấp một nắm bắt tất cả cho tất cả các trường hợp ngoại lệ bởi những điều sau đây từ liên kết http://expressjs.com/guide.html#error-handling

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

Nó đang làm việc cho tôi bây giờ. Tuy nhiên tôi đọc một nơi nào đó mà bắt lỗi như thế này không phải là một ý tưởng tốt vì nó có thể có tác dụng phụ và có thể để lại các biến trong một trạng thái không nhất quán? Cũng bắt ngoại lệ như thế này không làm việc cho tất cả các trường hợp, và có thể có một số trường hợp khi máy chủ vẫn có thể dừng lại cho một số ngoại lệ. Có đúng không?

Câu hỏi của tôi có thể là điều này.

1) Việc xử lý ngoại lệ như trên có thể khiến một số biến trong trạng thái không nhất quán không? 2) Có thể có một số trường hợp ngoại lệ sẽ vẫn dừng máy chủ không?

Cảm ơn & Trân

Tuco

+0

xem: http://machadogj.com/2013/4/error-handling-in-nodejs.html – vsync

Trả lời

3

1) Cho dù phương pháp xử lý ngoại lệ này có thể để lại một số biến trong tình trạng inconsistant phụ thuộc vào thực hiện của bạn.

Nếu bạn phạm vi tất cả các biến cho yêu cầu và chức năng cụ thể và không truy cập các biến toàn cầu hoặc cao hơn như đối tượng ứng dụng toàn cầu, bạn sẽ ổn. Bộ nhớ không sử dụng được làm sạch ngay sau khi ngoại lệ bởi bộ thu gom rác.

2) Có, có thể có một số ngoại lệ để dừng máy chủ. Do đó, bạn nên đặt trình xử lý xử lý ngoại lệ toàn cục cho quá trình như sau: http://nodejs.org/api/process.html#process_event_uncaughtexception